diff --git a/execution_chain/conf.nim b/execution_chain/conf.nim index b8d99a2140..acedddba58 100644 --- a/execution_chain/conf.nim +++ b/execution_chain/conf.nim @@ -52,12 +52,9 @@ func getLogLevels(): string = const defaultExecutionPort* = 30303 - defaultMetricsServerPort = 9093 defaultHttpPort = 8545 # https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/authentication.md#jwt-specifications defaultEngineApiPort* = 8551 - defaultAdminListenAddress = (static parseIpAddress("127.0.0.1")) - defaultAdminListenAddressDesc = $defaultAdminListenAddress & ", meaning local host only" logLevelDesc = getLogLevels() let @@ -180,22 +177,7 @@ type defaultValue: StdoutLogKind.Auto name: "log-format" .}: StdoutLogKind - metricsEnabled* {. - desc: "Enable the built-in metrics HTTP server" - defaultValue: false - name: "metrics" .}: bool - - metricsPort* {. - desc: "Listening port of the built-in metrics HTTP server" - defaultValue: defaultMetricsServerPort - defaultValueDesc: $defaultMetricsServerPort - name: "metrics-port" .}: Port - - metricsAddress* {. - desc: "Listening IP address of the built-in metrics HTTP server" - defaultValue: defaultAdminListenAddress - defaultValueDesc: $defaultAdminListenAddressDesc - name: "metrics-address" .}: IpAddress + metrics* {.flatten.}: MetricsConf bootstrapNodes {. separator: "\pNETWORKING OPTIONS:" diff --git a/execution_chain/nimbus.nim b/execution_chain/nimbus.nim index b81943996c..087183b204 100644 --- a/execution_chain/nimbus.nim +++ b/execution_chain/nimbus.nim @@ -47,7 +47,6 @@ import ] const - defaultMetricsServerPort = 8008 copyright = "Copyright (c) " & compileYear & " Status Research & Development GmbH" type NStartUpCmd* {.pure.} = enum @@ -87,22 +86,7 @@ type defaultValue: StdoutLogKind.Auto name: "log-format" .}: StdoutLogKind - metricsEnabled* {. - desc: "Enable the built-in metrics HTTP server" - defaultValue: false - name: "metrics" .}: bool - - metricsPort* {. - desc: "Listening port of the built-in metrics HTTP server" - defaultValue: defaultMetricsServerPort - defaultValueDesc: $defaultMetricsServerPort - name: "metrics-port" .}: Port - - metricsAddress* {. - desc: "Listening IP address of the built-in metrics HTTP server" - defaultValue: defaultAdminListenAddress - defaultValueDesc: $defaultAdminListenAddressDesc - name: "metrics-address" .}: IpAddress + metrics* {.flatten.}: MetricsConf numThreads* {. defaultValue: 0, @@ -212,7 +196,7 @@ proc runBeaconNode(p: BeaconThreadConfig) {.thread.} = &"http://127.0.0.1:{defaultEngineApiPort}/", Opt.some(@(distinctBase(jwtKey))) ) - config.metricsEnabled = false + config.metrics.enabled = false config.elUrls = @[ EngineApiUrlConfigValue( @@ -258,7 +242,7 @@ proc runBeaconNode(p: BeaconThreadConfig) {.thread.} = proc runExecutionClient(p: ExecutionThreadConfig) {.thread.} = var config = makeConfig(ignoreUnknown = true) - config.metricsEnabled = false + config.metrics.enabled = false config.engineApiEnabled = true config.engineApiPort = Port(defaultEngineApiPort) config.engineApiAddress = defaultAdminListenAddress @@ -303,7 +287,7 @@ proc runCombinedClient() = # permissions are insecure. quit QuitFailure - let metricsServer = (waitFor config.initMetricsServer()).valueOr: + let metricsServer = (waitFor initMetricsServer(config.metrics)).valueOr: quit 1 # Nim GC metrics (for the main thread) will be collected in onSecond(), but diff --git a/execution_chain/nimbus_execution_client.nim b/execution_chain/nimbus_execution_client.nim index 5f564424a1..016a04347e 100644 --- a/execution_chain/nimbus_execution_client.nim +++ b/execution_chain/nimbus_execution_client.nim @@ -330,7 +330,7 @@ proc main*(config = makeConfig(), nimbus = NimbusNode(nil)) {.noinline.} = # Metrics are useful not just when running node but also during import let metricsServer = try: - waitFor(initMetricsServer(config)).valueOr: + waitFor(initMetricsServer(config.metrics)).valueOr: quit(QuitFailure) except CancelledError: raiseAssert "Never cancelled" diff --git a/portal/client/nimbus_portal_client.nim b/portal/client/nimbus_portal_client.nim index fd12d60343..1e6be3bec3 100644 --- a/portal/client/nimbus_portal_client.nim +++ b/portal/client/nimbus_portal_client.nim @@ -242,7 +242,7 @@ proc run(portalClient: PortalClient, config: PortalConf) {.raises: [CatchableErr quit QuitFailure ## Start metrics HTTP server - let metricsServer = waitFor(initMetricsServer(config)).valueOr: + let metricsServer = waitFor(initMetricsServer(config.metrics)).valueOr: quit QuitFailure # Logged in initMetricsServer ## Start the Portal node. diff --git a/portal/client/nimbus_portal_client_conf.nim b/portal/client/nimbus_portal_client_conf.nim index 1c49990417..03084ff106 100644 --- a/portal/client/nimbus_portal_client_conf.nim +++ b/portal/client/nimbus_portal_client_conf.nim @@ -26,9 +26,7 @@ import const defaultListenAddress* = (static parseIpAddress("0.0.0.0")) - defaultAdminListenAddress* = (static parseIpAddress("127.0.0.1")) defaultListenAddressDesc = $defaultListenAddress - defaultAdminListenAddressDesc = $defaultAdminListenAddress defaultStorageCapacity* = 2000'u32 # 2 GB default defaultStorageCapacityDesc* = $defaultStorageCapacity @@ -166,22 +164,7 @@ type name: "debug-netkey-nodeid-prefix-unsafe" .}: Option[string] - metricsEnabled* {. - defaultValue: false, desc: "Enable the metrics server", name: "metrics" - .}: bool - - metricsAddress* {. - defaultValue: defaultAdminListenAddress, - defaultValueDesc: $defaultAdminListenAddressDesc, - desc: "Listening address of the metrics server", - name: "metrics-address" - .}: IpAddress - - metricsPort* {. - defaultValue: 8008, - desc: "Listening HTTP port of the metrics server", - name: "metrics-port" - .}: Port + metrics* {.flatten.}: MetricsConf rpcEnabled* {. desc: "Enable the HTTP JSON-RPC server", defaultValue: false, name: "rpc" diff --git a/portal/tools/portalcli.nim b/portal/tools/portalcli.nim index 781cc73538..e3e927fcaa 100644 --- a/portal/tools/portalcli.nim +++ b/portal/tools/portalcli.nim @@ -19,6 +19,7 @@ import eth/[common/keys, net/nat], eth/p2p/discoveryv5/node, eth/p2p/discoveryv5/protocol as discv5_protocol, + beacon_chain/nimbus_binary_common, ../common/common_utils, ../database/content_db, ../network/wire/ @@ -27,10 +28,7 @@ import const defaultListenAddress* = (static parseIpAddress("0.0.0.0")) - defaultAdminListenAddress* = (static parseIpAddress("127.0.0.1")) - defaultListenAddressDesc = $defaultListenAddress - defaultAdminListenAddressDesc = $defaultAdminListenAddress # 100mb seems a bit smallish we may consider increasing defaults after some # network measurements defaultStorageSize* = uint32(1000 * 1000 * 100) @@ -101,22 +99,7 @@ type name: "network-key" .}: PrivateKey - metricsEnabled* {. - defaultValue: false, desc: "Enable the metrics server", name: "metrics" - .}: bool - - metricsAddress* {. - defaultValue: defaultAdminListenAddress, - defaultValueDesc: $defaultAdminListenAddressDesc, - desc: "Listening address of the metrics server", - name: "metrics-address" - .}: IpAddress - - metricsPort* {. - defaultValue: 8008, - desc: "Listening HTTP port of the metrics server", - name: "metrics-port" - .}: Port + metrics* {.flatten.}: MetricsConf protocolId* {. defaultValue: getProtocolId(PortalSubnetwork.history), @@ -271,23 +254,11 @@ proc run(config: PortalCliConf) = bootstrapRecords = bootstrapRecords, ) - if config.metricsEnabled: - let - address = config.metricsAddress - port = config.metricsPort - url = "http://" & $address & ":" & $port & "/metrics" - - server = MetricsHttpServerRef.new($address, port).valueOr: - error "Could not instantiate metrics HTTP server", url, error - quit QuitFailure - - info "Starting metrics HTTP server", url - try: - waitFor server.start() - except MetricsError as exc: - fatal "Could not start metrics HTTP server", - url, error_msg = exc.msg, error_name = exc.name - quit QuitFailure + let metricsServer = (waitFor initMetricsServer(config.metrics)).valueOr: + quit QuitFailure + defer: + if metricsServer.isSome(): + waitFor metricsServer.stopMetricsServer() case config.cmd of ping: diff --git a/tests/test_configuration.nim b/tests/test_configuration.nim index 62aed29980..6625864823 100644 --- a/tests/test_configuration.nim +++ b/tests/test_configuration.nim @@ -316,9 +316,9 @@ proc configurationMain*() = check config.logLevel == "DEBUG" check config.logStdout == StdoutLogKind.Json - check config.metricsEnabled == true - check config.metricsPort == 127.Port - check config.metricsAddress == parseIpAddress("111.222.33.203") + check config.metrics.enabled == true + check config.metrics.port == 127.Port + check config.metrics.address == parseIpAddress("111.222.33.203") privateAccess(ExecutionClientConf) check config.bootstrapNodes.len == 3 diff --git a/vendor/nim-confutils b/vendor/nim-confutils index fd40a96a6d..3b8f3fb2b7 160000 --- a/vendor/nim-confutils +++ b/vendor/nim-confutils @@ -1 +1 @@ -Subproject commit fd40a96a6d18c48ba9145537d1a7b5ed1e4ac612 +Subproject commit 3b8f3fb2b719eab41d74a891677e540977caddf5 diff --git a/vendor/nimbus-eth2 b/vendor/nimbus-eth2 index 688b3eee11..540f349f69 160000 --- a/vendor/nimbus-eth2 +++ b/vendor/nimbus-eth2 @@ -1 +1 @@ -Subproject commit 688b3eee111ac809bb73dffb8e1fe612d53c302a +Subproject commit 540f349f690c1190733efc1e1ea9b8a1055cee33