metrics counter

This commit is contained in:
Nour Alharithi
2023-12-10 14:34:18 -08:00
parent abc23a01ae
commit ad1ef693fe
2 changed files with 26 additions and 58 deletions

View File

@@ -40,6 +40,8 @@ enum METRIC_TYPES {
gpa_fetch_duration = 'gpa_fetch_duration',
last_ws_message_received_ts = 'last_ws_message_received_ts',
account_updates_count = 'account_updates_count',
cache_hit_count = 'cache_hit_count',
cache_miss_count = 'cache_miss_count',
current_system_ts = 'current_system_ts',
health_status = 'health_status',
}
@@ -126,6 +128,14 @@ lastWsReceivedTsGauge.addCallback((obs: ObservableResult) => {
obs.observe(lastWsMsgReceivedTs, {});
});
const cacheHitCounter = meter.createCounter(METRIC_TYPES.cache_hit_count, {
description: 'Total redis cache hits',
});
const cacheMissCounter = meter.createCounter(METRIC_TYPES.cache_miss_count, {
description: 'Total redis cache misses',
});
const accountUpdatesCounter = meter.createCounter(
METRIC_TYPES.account_updates_count,
{
@@ -238,4 +248,6 @@ export {
handleHealthCheck,
setLastReceivedWsMsgTs,
accountUpdatesCounter,
cacheHitCounter,
cacheMissCounter,
};

View File

@@ -37,7 +37,9 @@ import {
gpaFetchDurationHistogram,
handleHealthCheck,
accountUpdatesCounter,
cacheHitCounter,
setLastReceivedWsMsgTs,
cacheMissCounter,
} from './core/metrics';
import { handleResponseTime } from './core/middleware';
import {
@@ -768,22 +770,10 @@ const main = async () => {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_5`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 20) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_20`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 100) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_100`
@@ -791,9 +781,7 @@ const main = async () => {
}
if (
redisL2 &&
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
slotSource.getSlot() - parseInt(JSON.parse(redisL2).slot) < 10
)
l2Formatted = redisL2;
} else if (
@@ -808,22 +796,10 @@ const main = async () => {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_5`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 20) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_20`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 100) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_100`
@@ -831,14 +807,13 @@ const main = async () => {
}
if (
redisL2 &&
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
slotSource.getSlot() - parseInt(JSON.parse(redisL2).slot) < 10
)
l2Formatted = redisL2;
}
if (l2Formatted) {
cacheHitCounter.add(1);
res.writeHead(200);
res.end(JSON.stringify(l2Formatted));
return;
@@ -896,7 +871,7 @@ const main = async () => {
);
}
}
cacheMissCounter.add(1);
res.writeHead(200);
res.end(JSON.stringify(l2Formatted));
} catch (err) {
@@ -976,27 +951,20 @@ const main = async () => {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_5`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 20) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_20`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 100) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_perp_${normedMarketIndex}_depth_100`
);
}
if (
redisL2 &&
slotSource.getSlot() - parseInt(JSON.parse(redisL2).slot) < 10
)
l2Formatted = redisL2;
} else if (
marketType === 'spot' &&
normedParam['includePhoenix'].toLowerCase() === 'true' &&
@@ -1008,22 +976,10 @@ const main = async () => {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_5`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 20) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_20`
);
if (
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
)
l2Formatted = redisL2;
} else if (parseInt(adjustedDepth as string) === 100) {
redisL2 = await redisClient.client.get(
`last_update_orderbook_spot_${normedMarketIndex}_depth_100`
@@ -1031,14 +987,13 @@ const main = async () => {
}
if (
redisL2 &&
Math.abs(
parseInt(JSON.parse(redisL2).slot) - slotSource.getSlot()
) < 10
slotSource.getSlot() - parseInt(JSON.parse(redisL2).slot) < 10
)
l2Formatted = redisL2;
}
if (l2Formatted) {
cacheHitCounter.add(1);
return l2Formatted;
}
}
@@ -1097,6 +1052,7 @@ const main = async () => {
);
}
}
cacheMissCounter.add(1);
return l2Formatted;
})
);