Skip to content

Commit 5540587

Browse files
feat: add beacon-metrics-gazer + beacon-metrics-gazer grafana dashboard (ethereum#114)
Changelog picked up from commits here: feat: add beacon-metrics-gazer --------- Co-authored-by: Gyanendra Mishra <[email protected]>
1 parent 14dc957 commit 5540587

File tree

8 files changed

+453
-2
lines changed

8 files changed

+453
-2
lines changed

main.star

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ eth_network_module = import_module("github.com/kurtosis-tech/eth-network-package
77
transaction_spammer = import_module("github.com/kurtosis-tech/eth2-package/src/transaction_spammer/transaction_spammer.star")
88
cl_forkmon = import_module("github.com/kurtosis-tech/eth2-package/src/cl_forkmon/cl_forkmon_launcher.star")
99
el_forkmon = import_module("github.com/kurtosis-tech/eth2-package/src/el_forkmon/el_forkmon_launcher.star")
10+
beacon_metrics_gazer = import_module("github.com/kurtosis-tech/eth2-package/src/beacon_metrics_gazer/beacon_metrics_gazer_launcher.star")
1011
prometheus = import_module("github.com/kurtosis-tech/eth2-package/src/prometheus/prometheus_launcher.star")
1112
grafana =import_module("github.com/kurtosis-tech/eth2-package/src/grafana/grafana_launcher.star")
1213
testnet_verifier = import_module("github.com/kurtosis-tech/eth2-package/src/testnet_verifier/testnet_verifier.star")
@@ -87,6 +88,11 @@ def run(plan, args):
8788
el_forkmon.launch_el_forkmon(plan, el_forkmon_config_template, all_el_client_contexts)
8889
plan.print("Succesfully launched execution layer forkmon")
8990

91+
plan.print("Launching beacon metrics gazer")
92+
beacon_metrics_gazer_config_template = read_file(static_files.BEACON_METRICS_GAZER_CONFIG_TEMPLATE_FILEPATH)
93+
beacon_metrics_gazer.launch_beacon_metrics_gazer(plan, beacon_metrics_gazer_config_template, all_cl_client_contexts,network_params)
94+
plan.print("Succesfully launched beacon metrics gazer")
95+
9096
plan.print("Launching prometheus...")
9197
prometheus_private_url = prometheus.launch_prometheus(
9298
plan,
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
shared_utils = import_module("github.com/kurtosis-tech/eth2-package/src/shared_utils/shared_utils.star")
2+
3+
4+
SERVICE_NAME = "beacon-metrics-gazer"
5+
IMAGE_NAME = "dapplion/beacon-metrics-gazer:latest"
6+
7+
HTTP_PORT_ID = "http"
8+
HTTP_PORT_NUMBER = 8080
9+
10+
BEACON_METRICS_GAZER_CONFIG_FILENAME = "beacon-metrics-gazer-ranges.yaml"
11+
12+
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config"
13+
14+
USED_PORTS = {
15+
HTTP_PORT_ID:shared_utils.new_port_spec(HTTP_PORT_NUMBER, shared_utils.TCP_PROTOCOL, shared_utils.HTTP_APPLICATION_PROTOCOL)
16+
}
17+
18+
19+
def launch_beacon_metrics_gazer(
20+
plan,
21+
config_template,
22+
cl_client_contexts,
23+
network_params
24+
):
25+
26+
data = []
27+
for index, client in enumerate(cl_client_contexts):
28+
start_index = index*network_params.num_validator_keys_per_node
29+
end_index = ((index+1)*network_params.num_validator_keys_per_node)-1
30+
service_name = client.beacon_service_name
31+
data.append({"ClientName": service_name, "Range": "{0}-{1}".format(start_index, end_index)})
32+
33+
template_data = {"Data": data}
34+
35+
template_and_data_by_rel_dest_filepath = {}
36+
template_and_data_by_rel_dest_filepath[BEACON_METRICS_GAZER_CONFIG_FILENAME] = shared_utils.new_template_and_data(config_template, template_data)
37+
38+
config_files_artifact_name = plan.render_templates(template_and_data_by_rel_dest_filepath, "beacon-metrics-gazer-config")
39+
40+
config = get_config(
41+
config_files_artifact_name,
42+
cl_client_contexts[0].ip_addr,
43+
cl_client_contexts[0].http_port_num)
44+
45+
plan.add_service(SERVICE_NAME, config)
46+
47+
48+
def get_config(
49+
config_files_artifact_name,
50+
ip_addr,
51+
http_port_num):
52+
config_file_path = shared_utils.path_join(BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE, BEACON_METRICS_GAZER_CONFIG_FILENAME)
53+
return ServiceConfig(
54+
image = IMAGE_NAME,
55+
ports = USED_PORTS,
56+
files = {
57+
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name,
58+
},
59+
cmd = [
60+
"http://{0}:{1}".format(ip_addr, http_port_num),
61+
"--ranges-file",
62+
"/config/{0}".format(BEACON_METRICS_GAZER_CONFIG_FILENAME),
63+
"--port",
64+
"{0}".format(HTTP_PORT_NUMBER),
65+
"--address",
66+
"0.0.0.0",
67+
"-v"
68+
]
69+
)

src/grafana/grafana_launcher.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ CONFIG_DIRPATH_ENV_VAR = "GF_PATHS_PROVISIONING"
1717

1818
GRAFANA_CONFIG_DIRPATH_ON_SERVICE = "/config"
1919
GRAFANA_DASHBOARDS_DIRPATH_ON_SERVICE = "/dashboards"
20-
GRAFANA_DASHBOARDS_FILEPATH_ON_SERVICE = GRAFANA_DASHBOARDS_DIRPATH_ON_SERVICE + "/dashboard.json"
20+
GRAFANA_DASHBOARDS_FILEPATH_ON_SERVICE = GRAFANA_DASHBOARDS_DIRPATH_ON_SERVICE
2121

2222

2323
USED_PORTS = {

src/static_files/static_files.star

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ EL_FORKMON_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + \
1313
PROMETHEUS_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + \
1414
"/prometheus-config/prometheus.yml.tmpl"
1515

16+
# Beacon Metrics Gazer config
17+
BEACON_METRICS_GAZER_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + \
18+
"/beacon-metrics-gazer-config/config.yaml.tmpl"
19+
1620
# Grafana config
1721
GRAFANA_CONFIG_DIRPATH = "/grafana-config"
1822
GRAFANA_DATASOURCE_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + \
1923
GRAFANA_CONFIG_DIRPATH + "/templates/datasource.yml.tmpl"
2024
GRAFANA_DASHBOARD_PROVIDERS_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + \
2125
GRAFANA_CONFIG_DIRPATH + "/templates/dashboard-providers.yml.tmpl"
2226
GRAFANA_DASHBOARDS_CONFIG_DIRPATH = STATIC_FILES_DIRPATH + \
23-
GRAFANA_CONFIG_DIRPATH + "/dashboards/dashboard.json"
27+
GRAFANA_CONFIG_DIRPATH + "/dashboards"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{{ range $data := .Data }}
2+
{{ $data.Range }}: {{ $data.ClientName }}
3+
{{ end }}

0 commit comments

Comments
 (0)