feat: feed worker metrics into runtime router
This commit is contained in:
+21
-3
@@ -132,15 +132,19 @@ function createRuntimeRouter({
|
||||
key('worker', workerId, 'ewma_first_token_ms'),
|
||||
key('worker', workerId, 'error_rate'),
|
||||
key('worker', workerId, 'memory_pressure'),
|
||||
key('worker', workerId, 'cpu_load'),
|
||||
key('worker', workerId, 'fd_pressure'),
|
||||
key('worker', workerId, 'drain'),
|
||||
]);
|
||||
if (/^(1|true|yes)$/i.test(String(values[5] ?? ''))) return Number.POSITIVE_INFINITY;
|
||||
if (/^(1|true|yes)$/i.test(String(values[7] ?? ''))) return Number.POSITIVE_INFINITY;
|
||||
return (
|
||||
readNumber(values[0]) * 3 +
|
||||
readNumber(values[1]) +
|
||||
readNumber(values[2]) * 0.01 +
|
||||
readNumber(values[3]) * 5 +
|
||||
readNumber(values[4]) * 2
|
||||
readNumber(values[4]) * 2 +
|
||||
readNumber(values[5]) * 2 +
|
||||
readNumber(values[6]) * 2
|
||||
);
|
||||
};
|
||||
const workerScoreFromValues = (values = []) => (
|
||||
@@ -148,7 +152,9 @@ function createRuntimeRouter({
|
||||
readNumber(values[1]) +
|
||||
readNumber(values[2]) * 0.01 +
|
||||
readNumber(values[3]) * 5 +
|
||||
readNumber(values[4]) * 2
|
||||
readNumber(values[4]) * 2 +
|
||||
readNumber(values[12]) * 2 +
|
||||
readNumber(values[13]) * 2
|
||||
);
|
||||
return {
|
||||
async pickTarget(fallbackPick, orderedTargets = targets) {
|
||||
@@ -233,6 +239,12 @@ function createRuntimeRouter({
|
||||
key('worker', workerId, 'stream_error_count'),
|
||||
key('worker', workerId, 'last_stream_started_at'),
|
||||
key('worker', workerId, 'last_stream_ended_at'),
|
||||
key('worker', workerId, 'cpu_load'),
|
||||
key('worker', workerId, 'fd_pressure'),
|
||||
key('worker', workerId, 'fd_count'),
|
||||
key('worker', workerId, 'container_pids'),
|
||||
key('worker', workerId, 'container_health'),
|
||||
key('worker', workerId, 'metrics_sampled_at'),
|
||||
])
|
||||
.catch(() => [])
|
||||
: [];
|
||||
@@ -251,6 +263,12 @@ function createRuntimeRouter({
|
||||
streamErrorCount: readNumber(values?.[9]),
|
||||
lastStreamStartedAt: values?.[10] ? Number(values[10]) : null,
|
||||
lastStreamEndedAt: values?.[11] ? Number(values[11]) : null,
|
||||
cpuLoad: readNumber(values?.[12]),
|
||||
fdPressure: readNumber(values?.[13]),
|
||||
fdCount: readNumber(values?.[14]),
|
||||
containerPids: readNumber(values?.[15]),
|
||||
containerHealth: values?.[16] ?? null,
|
||||
metricsSampledAt: values?.[17] ? Number(values[17]) : null,
|
||||
score: workerScoreFromValues(values),
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user