Simply record the time from entering `main` to start listening sockets.
port_name = "postgresql_port";
        createServer(config, listen_host, port_name, listen_try, start_servers, servers, [&](UInt16 port) -> ProtocolServerAdapter
        {
            Poco::Net::ServerSocket socket;
            auto address = socketBindListen(config, socket, listen_host, port,  true);
            socket.setReceiveTimeout(Poco::Timespan());
            socket.setSendTimeout(settings.send_timeout);
            return ProtocolServerAdapter(
                listen_host,
                port_name,
                "PostgreSQL compatibility protocol: " + address.toString(),
                std::make_unique<TCPServer>(new PostgreSQLHandlerFactory(*this), server_pool, socket, new Poco::Net::TCPServerParams));
        });
#if USE_GRPC
        port_name = "grpc_port";
        createServer(config, listen_host, port_name, listen_try, start_servers, servers, [&](UInt16 port) -> ProtocolServerAdapter
        {
            Poco::Net::SocketAddress server_address(listen_host, port);
            return ProtocolServerAdapter(
                listen_host,
                port_name,
                "gRPC protocol: " + server_address.toString(),
                std::make_unique<GRPCServer>(*this, makeSocketAddress(listen_host, port, &logger())));
        });
#endif
        
        port_name = "prometheus.port";
        createServer(config, listen_host, port_name, listen_try, start_servers, servers, [&](UInt16 port) -> ProtocolServerAdapter
        {
            Poco::Net::ServerSocket socket;