From 14a0cf57c18da78e42749279cff01e37ec830fb6 Mon Sep 17 00:00:00 2001 From: Sadab Hafiz <48334150+Proto007@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:25:03 -0400 Subject: [PATCH] feat: `gRPCUI` instruction (#2901) Co-authored-by: Sadab Hafiz Signed-off-by: Aaron Pham <29749331+aarnphm@users.noreply.github.com> --- bentoml/serve.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/bentoml/serve.py b/bentoml/serve.py index 380ef8f6d2c..12f4d1604d1 100644 --- a/bentoml/serve.py +++ b/bentoml/serve.py @@ -31,7 +31,7 @@ logger = logging.getLogger(__name__) -PROMETHEUS_MESSAGE = "Prometheus metrics for {server_type} BentoServer from {bento_identifier} can be accessed at {addr}" +PROMETHEUS_MESSAGE = "Prometheus metrics for {server_type} BentoServer of '{bento_identifier}' can be accessed at '{addr}'." SCRIPT_RUNNER = "bentoml_cli.server.runner" SCRIPT_API_SERVER = "bentoml_cli.server.http_api_server" @@ -109,6 +109,27 @@ def create_watcher( ) +def log_grpcui_message(port: int) -> None: + message = "To use gRPC UI, run the following command: 'docker run -it --rm {network_args} fullstorydev/grpcui -plaintext {platform_deps}:{port}', followed by opening 'http://0.0.0.0:8080' in your browser of choice." + + if psutil.WINDOWS or psutil.MACOS: + logger.info( + message.format( + platform_deps="host.docker.internal", + port=port, + network_args="-p 8080:8080", + ) + ) + else: + logger.info( + message.format( + platform_deps="localhost", + port=port, + network_args="--network=host", + ) + ) + + @inject def serve_development( bento_identifier: str, @@ -193,6 +214,9 @@ def serve_development( singleton=True, ) ) + + log_grpcui_message(port) + logger.info( PROMETHEUS_MESSAGE.format( bento_identifier=bento_identifier, @@ -532,6 +556,8 @@ def serve_production( ) ) + log_grpcui_message(port) + if BentoMLContainer.api_server_config.metrics.enabled.get(): metrics_host = BentoMLContainer.grpc.metrics_host.get() metrics_port = BentoMLContainer.grpc.metrics_port.get() @@ -600,6 +626,7 @@ def serve_production( numprocesses=api_workers or math.ceil(CpuResource.from_system()), ) ) + logger.info( PROMETHEUS_MESSAGE.format( bento_identifier=bento_identifier,