Skip to content

Commit 0a37097

Browse files
committed
feat: add metrics allowed regions
1 parent d4ce7a6 commit 0a37097

File tree

8 files changed

+159
-75
lines changed

8 files changed

+159
-75
lines changed

api/read/arbitrum.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.arbitrum import (
@@ -13,19 +15,29 @@
1315
WSBlockLatencyMetric,
1416
)
1517

16-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
17-
18-
METRICS = [
19-
(WSBlockLatencyMetric, metric_name),
20-
(HTTPBlockNumberLatencyMetric, metric_name),
21-
(HTTPEthCallLatencyMetric, metric_name),
22-
(HTTPAccBalanceLatencyMetric, metric_name),
23-
(HTTPDebugTraceBlockByNumberLatencyMetric, metric_name),
24-
(HTTPDebugTraceTxLatencyMetric, metric_name),
25-
(HTTPTxReceiptLatencyMetric, metric_name),
26-
(HTTPGetLogsLatencyMetric, metric_name),
18+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
19+
ALLOWED_REGIONS: list[str] = [
20+
"fra1", # Frankfurt (EU)
21+
"sfo1", # San Francisco (US West)
22+
# "sin1", # Singapore
23+
"kix1", # Osaka (JP)
2724
]
2825

26+
METRICS = (
27+
[
28+
(WSBlockLatencyMetric, METRIC_NAME),
29+
(HTTPBlockNumberLatencyMetric, METRIC_NAME),
30+
(HTTPEthCallLatencyMetric, METRIC_NAME),
31+
(HTTPAccBalanceLatencyMetric, METRIC_NAME),
32+
(HTTPDebugTraceBlockByNumberLatencyMetric, METRIC_NAME),
33+
(HTTPDebugTraceTxLatencyMetric, METRIC_NAME),
34+
(HTTPTxReceiptLatencyMetric, METRIC_NAME),
35+
(HTTPGetLogsLatencyMetric, METRIC_NAME),
36+
]
37+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
38+
else []
39+
)
40+
2941

3042
class handler(BaseVercelHandler):
3143
metrics_handler = MetricsHandler("Arbitrum", METRICS)

api/read/base.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.base import (
@@ -13,19 +15,29 @@
1315
WSBlockLatencyMetric,
1416
)
1517

16-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
17-
18-
METRICS = [
19-
(WSBlockLatencyMetric, metric_name),
20-
(HTTPBlockNumberLatencyMetric, metric_name),
21-
(HTTPEthCallLatencyMetric, metric_name),
22-
(HTTPAccBalanceLatencyMetric, metric_name),
23-
(HTTPDebugTraceBlockByNumberLatencyMetric, metric_name),
24-
(HTTPDebugTraceTxLatencyMetric, metric_name),
25-
(HTTPTxReceiptLatencyMetric, metric_name),
26-
(HTTPGetLogsLatencyMetric, metric_name),
18+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
19+
ALLOWED_REGIONS: list[str] = [
20+
"fra1", # Frankfurt (EU)
21+
"sfo1", # San Francisco (US West)
22+
# "sin1", # Singapore
23+
"kix1", # Osaka (JP)
2724
]
2825

26+
METRICS = (
27+
[
28+
(WSBlockLatencyMetric, METRIC_NAME),
29+
(HTTPBlockNumberLatencyMetric, METRIC_NAME),
30+
(HTTPEthCallLatencyMetric, METRIC_NAME),
31+
(HTTPAccBalanceLatencyMetric, METRIC_NAME),
32+
(HTTPDebugTraceBlockByNumberLatencyMetric, METRIC_NAME),
33+
(HTTPDebugTraceTxLatencyMetric, METRIC_NAME),
34+
(HTTPTxReceiptLatencyMetric, METRIC_NAME),
35+
(HTTPGetLogsLatencyMetric, METRIC_NAME),
36+
]
37+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
38+
else []
39+
)
40+
2941

3042
class handler(BaseVercelHandler):
3143
metrics_handler = MetricsHandler("Base", METRICS)

api/read/bnbsc.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.bnbsc import (
@@ -13,19 +15,29 @@
1315
WSBlockLatencyMetric,
1416
)
1517

16-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
17-
18-
METRICS = [
19-
(WSBlockLatencyMetric, metric_name),
20-
(HTTPBlockNumberLatencyMetric, metric_name),
21-
(HTTPEthCallLatencyMetric, metric_name),
22-
(HTTPAccBalanceLatencyMetric, metric_name),
23-
(HTTPDebugTraceBlockByNumberLatencyMetric, metric_name),
24-
(HTTPDebugTraceTxLatencyMetric, metric_name),
25-
(HTTPTxReceiptLatencyMetric, metric_name),
26-
(HTTPGetLogsLatencyMetric, metric_name),
18+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
19+
ALLOWED_REGIONS: list[str] = [
20+
"fra1", # Frankfurt (EU)
21+
"sfo1", # San Francisco (US West)
22+
"sin1", # Singapore
23+
# "kix1", # Osaka (JP)
2724
]
2825

26+
METRICS = (
27+
[
28+
(WSBlockLatencyMetric, METRIC_NAME),
29+
(HTTPBlockNumberLatencyMetric, METRIC_NAME),
30+
(HTTPEthCallLatencyMetric, METRIC_NAME),
31+
(HTTPAccBalanceLatencyMetric, METRIC_NAME),
32+
(HTTPDebugTraceBlockByNumberLatencyMetric, METRIC_NAME),
33+
(HTTPDebugTraceTxLatencyMetric, METRIC_NAME),
34+
(HTTPTxReceiptLatencyMetric, METRIC_NAME),
35+
(HTTPGetLogsLatencyMetric, METRIC_NAME),
36+
]
37+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
38+
else []
39+
)
40+
2941

3042
class handler(BaseVercelHandler):
3143
metrics_handler = MetricsHandler("BNB", METRICS)

api/read/ethereum.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.ethereum import (
@@ -11,19 +13,29 @@
1113
WSBlockLatencyMetric,
1214
)
1315

14-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
15-
16-
METRICS = [
17-
(WSBlockLatencyMetric, metric_name),
18-
(HTTPBlockNumberLatencyMetric, metric_name),
19-
(HTTPEthCallLatencyMetric, metric_name),
20-
(HTTPAccBalanceLatencyMetric, metric_name),
21-
(HTTPDebugTraceBlockByNumberLatencyMetric, metric_name),
22-
(HTTPDebugTraceTxLatencyMetric, metric_name),
23-
(HTTPTxReceiptLatencyMetric, metric_name),
24-
(HTTPGetLogsLatencyMetric, metric_name),
16+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
17+
ALLOWED_REGIONS: list[str] = [
18+
"fra1", # Frankfurt (EU)
19+
"sfo1", # San Francisco (US West)
20+
"sin1", # Singapore
21+
# "kix1", # Osaka (JP)
2522
]
2623

24+
METRICS = (
25+
[
26+
(WSBlockLatencyMetric, METRIC_NAME),
27+
(HTTPBlockNumberLatencyMetric, METRIC_NAME),
28+
(HTTPEthCallLatencyMetric, METRIC_NAME),
29+
(HTTPAccBalanceLatencyMetric, METRIC_NAME),
30+
(HTTPDebugTraceBlockByNumberLatencyMetric, METRIC_NAME),
31+
(HTTPDebugTraceTxLatencyMetric, METRIC_NAME),
32+
(HTTPTxReceiptLatencyMetric, METRIC_NAME),
33+
(HTTPGetLogsLatencyMetric, METRIC_NAME),
34+
]
35+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
36+
else []
37+
)
38+
2739

2840
class handler(BaseVercelHandler):
2941
metrics_handler = MetricsHandler("Ethereum", METRICS)

api/read/solana.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.solana import (
@@ -9,17 +11,27 @@
911
HTTPSimulateTxLatencyMetric,
1012
)
1113

12-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
13-
14-
METRICS = [
15-
(HTTPGetRecentBlockhashLatencyMetric, metric_name),
16-
(HTTPSimulateTxLatencyMetric, metric_name),
17-
(HTTPGetBalanceLatencyMetric, metric_name),
18-
(HTTPGetBlockLatencyMetric, metric_name),
19-
(HTTPGetTxLatencyMetric, metric_name),
20-
(HTTPGetProgramAccsLatencyMetric, metric_name),
14+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
15+
ALLOWED_REGIONS: list[str] = [
16+
"fra1", # Frankfurt (EU)
17+
"sfo1", # San Francisco (US West)
18+
"sin1", # Singapore
19+
# "kix1", # Osaka (JP)
2120
]
2221

22+
METRICS = (
23+
[
24+
(HTTPGetRecentBlockhashLatencyMetric, METRIC_NAME),
25+
(HTTPSimulateTxLatencyMetric, METRIC_NAME),
26+
(HTTPGetBalanceLatencyMetric, METRIC_NAME),
27+
(HTTPGetBlockLatencyMetric, METRIC_NAME),
28+
(HTTPGetTxLatencyMetric, METRIC_NAME),
29+
(HTTPGetProgramAccsLatencyMetric, METRIC_NAME),
30+
]
31+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
32+
else []
33+
)
34+
2335

2436
class handler(BaseVercelHandler):
2537
metrics_handler = MetricsHandler("Solana", METRICS)

api/read/test_blockchain.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.solana import (
@@ -7,15 +9,25 @@
79
HTTPSimulateTxLatencyMetric,
810
)
911

10-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
11-
12-
METRICS = [
13-
(HTTPGetRecentBlockhashLatencyMetric, metric_name),
14-
(HTTPSimulateTxLatencyMetric, metric_name),
15-
(HTTPGetBalanceLatencyMetric, metric_name),
16-
(HTTPGetProgramAccsLatencyMetric, metric_name),
12+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
13+
ALLOWED_REGIONS: list[str] = [
14+
"fra1", # Frankfurt (EU)
15+
"sfo1", # San Francisco (US West)
16+
"sin1", # Singapore
17+
# "kix1", # Osaka (JP)
1718
]
1819

20+
METRICS = (
21+
[
22+
(HTTPGetRecentBlockhashLatencyMetric, METRIC_NAME),
23+
(HTTPSimulateTxLatencyMetric, METRIC_NAME),
24+
(HTTPGetBalanceLatencyMetric, METRIC_NAME),
25+
(HTTPGetProgramAccsLatencyMetric, METRIC_NAME),
26+
]
27+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
28+
else []
29+
)
30+
1931

2032
class handler(BaseVercelHandler):
2133
metrics_handler = MetricsHandler("TEST_BLOCKCHAIN", METRICS)

api/read/ton.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os # noqa: D100
2+
13
from common.metrics_handler import BaseVercelHandler, MetricsHandler
24
from config.defaults import MetricsServiceConfig
35
from metrics.ton import (
@@ -8,16 +10,26 @@
810
HTTPRunGetMethodLatencyMetric,
911
)
1012

11-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
12-
13-
METRICS = [
14-
(HTTPGetBlockHeaderLatencyMetric, metric_name),
15-
(HTTPRunGetMethodLatencyMetric, metric_name),
16-
(HTTPGetAddressBalanceLatencyMetric, metric_name),
17-
(HTTPGetBlockTxsLatencyMetric, metric_name),
18-
(HTTPGetWalletTxsLatencyMetric, metric_name),
13+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}response_latency_seconds"
14+
ALLOWED_REGIONS: list[str] = [
15+
"fra1", # Frankfurt (EU)
16+
"sfo1", # San Francisco (US West)
17+
"sin1", # Singapore
18+
# "kix1", # Osaka (JP)
1919
]
2020

21+
METRICS = (
22+
[
23+
(HTTPGetBlockHeaderLatencyMetric, METRIC_NAME),
24+
(HTTPRunGetMethodLatencyMetric, METRIC_NAME),
25+
(HTTPGetAddressBalanceLatencyMetric, METRIC_NAME),
26+
(HTTPGetBlockTxsLatencyMetric, METRIC_NAME),
27+
(HTTPGetWalletTxsLatencyMetric, METRIC_NAME),
28+
]
29+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
30+
else []
31+
)
32+
2133

2234
class handler(BaseVercelHandler):
2335
metrics_handler = MetricsHandler("TON", METRICS)

api/write/solana.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import os
1+
import os # noqa: D100
22

33
from common.metrics_handler import BaseVercelHandler, MetricsHandler
44
from config.defaults import MetricsServiceConfig
55
from metrics.solana_landing_rate import SolanaLandingMetric
66

7-
metric_name = f"{MetricsServiceConfig.METRIC_PREFIX}transaction_landing_latency"
8-
target_region = "fra1"
7+
METRIC_NAME = f"{MetricsServiceConfig.METRIC_PREFIX}transaction_landing_latency"
8+
ALLOWED_REGIONS = ["fra1"]
99

10-
# Run this metric only in EU (fra1)
10+
# Run this metric only in allowed regions
1111
METRICS: list[tuple[type[SolanaLandingMetric], str]] = (
12-
[]
13-
if os.getenv("VERCEL_REGION") != target_region # System env var, standard name
14-
else [(SolanaLandingMetric, metric_name)]
12+
[(SolanaLandingMetric, METRIC_NAME)]
13+
if os.getenv("VERCEL_REGION") in ALLOWED_REGIONS # System env var, standard name
14+
else []
1515
)
1616

1717

0 commit comments

Comments
 (0)