-- Add upstream error events list (JSONB) to ops_error_logs for per-request correlation.
--
-- This is intentionally idempotent.
ALTERTABLEops_error_logs
ADDCOLUMNIFNOTEXISTSupstream_errorsJSONB;
COMMENTONCOLUMNops_error_logs.upstream_errorsIS
'Sanitized upstream error events list (JSON array), correlated per gateway request (request_id/client_request_id); used for per-request upstream debugging.';
reportHint:'Schedules use cron syntax; leave empty to use defaults.',
validation:{
title:'Please fix the following issues',
invalid:'Invalid email notification config',
alertRecipientsRequired:'Alert emails are enabled but no recipients are configured',
reportRecipientsRequired:'Report emails are enabled but no recipients are configured',
invalidRecipients:'One or more recipient emails are invalid',
rateLimitRange:'Rate limit per hour must be a number ≥ 0',
batchWindowRange:'Batch window must be between 0 and 86400 seconds',
cronRequired:'A cron expression is required when schedule is enabled',
cronFormat:'Cron expression format looks invalid (expected at least 5 parts)',
digestMinCountRange:'Min errors for digest must be a number ≥ 0',
accountHealthThresholdRange:'Account health threshold must be between 0 and 100'
}
},
concurrency:{
title:'Concurrency / Queue',
byPlatform:'By Platform',
byGroup:'By Group',
byAccount:'By Account',
totalRows:'{count} rows',
disabledHint:'Realtime monitoring is disabled in settings.',
empty:'No data',
queued:'Queue {count}',
rateLimited:'Rate-limited {count}',
errorAccounts:'Errors {count}',
loadFailed:'Failed to load concurrency data'
},
realtime:{
title:'Realtime',
connected:'Realtime connected',
connecting:'Realtime connecting',
reconnecting:'Realtime reconnecting',
offline:'Realtime offline',
closed:'Realtime closed',
reconnectIn:'retry in {seconds}s'
},
queryMode:{
auto:'Auto',
raw:'Raw',
preagg:'Preagg'
},
accountAvailability:{
available:'Available',
unavailable:'Unavailable',
accountError:'Error'
},
tooltips:{
throughputTrend:'Requests/QPS + Tokens/TPS in the selected window.',
latencyHistogram:'Latency distribution (duration_ms) for successful requests.',
errorTrend:'Error counts over time (SLA scope excludes business limits; upstream excludes 429/529).',
errorDistribution:'Error distribution by status code.',
goroutines:
'Number of Go runtime goroutines (lightweight threads). There is no absolute “safe” number—use your historical baseline. Heuristic: <2k is common; 2k–8k watch; >8k plus rising queue/latency often suggests blocking/leaks.',
cpu:'CPU usage percentage, showing system processor load.',
memory:'Memory usage, including used and total available memory.',
db:'Database connection pool status, including active, idle, and waiting connections.',
redis:'Redis connection pool status, showing active and idle connections.',
jobs:'Background job execution status, including last run time, success time, and error information.',
qps:'Queries Per Second (QPS) and Tokens Per Second (TPS), real-time system throughput.',
tokens:'Total number of tokens processed in the current time window.',