diff --git a/execution_chain/conf.nim b/execution_chain/conf.nim index a3303663e6..70b69ae670 100644 --- a/execution_chain/conf.nim +++ b/execution_chain/conf.nim @@ -48,8 +48,6 @@ const 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 @@ -170,22 +168,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: (port: defaultMetricsServerPort).}: MetricsConf bootstrapNodes {. separator: "\pNETWORKING OPTIONS:" diff --git a/execution_chain/nimbus.nim b/execution_chain/nimbus.nim index d379576282..2ecbdf17c7 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 @@ -94,22 +93,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, @@ -219,7 +203,7 @@ proc runBeaconNode(p: BeaconThreadConfig) {.thread.} = let engineUrl = EngineApiUrl.init(&"http://127.0.0.1:{defaultEngineApiPort}/", Opt.some(jwtKey)) - config.metricsEnabled = false + config.metrics.enabled = false config.elUrls.add EngineApiUrlConfigValue( url: engineUrl.url, jwtSecret: some toHex(distinctBase(jwtKey)) ) @@ -265,7 +249,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 @@ -315,7 +299,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 15600673b7..7d8b084cfb 100644 --- a/execution_chain/nimbus_execution_client.nim +++ b/execution_chain/nimbus_execution_client.nim @@ -374,7 +374,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 127d24cc3b..c6f72dc7bd 100644 --- a/portal/client/nimbus_portal_client.nim +++ b/portal/client/nimbus_portal_client.nim @@ -240,7 +240,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 562e62908d..5ce87f12a2 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 @@ -164,22 +162,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 2c97f8dab8..d706267878 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), @@ -275,23 +258,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 6d5845f209..c2f8da0b2f 100644 --- a/tests/test_configuration.nim +++ b/tests/test_configuration.nim @@ -322,9 +322,9 @@ proc configurationMain*() = check config.logLevel == "DEBUG" check config.logFormat == 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 5286ed67d3..2458c36ac0 160000 --- a/vendor/nim-confutils +++ b/vendor/nim-confutils @@ -1 +1 @@ -Subproject commit 5286ed67d363a3630ece85a0e8c1141d1d52b434 +Subproject commit 2458c36ac00ed39ee3b1ac141f94a7e7351e82c0 diff --git a/vendor/nimbus-eth2 b/vendor/nimbus-eth2 index 80b66380f9..d2b1a6afbe 160000 --- a/vendor/nimbus-eth2 +++ b/vendor/nimbus-eth2 @@ -1 +1 @@ -Subproject commit 80b66380f9be0aab908256aeaba8f9dcad119c7a +Subproject commit d2b1a6afbe627963be8caf6c314ae8ce752cadf7