@@ -65,69 +65,73 @@ private void blockUntilShutdown() throws InterruptedException {
6565 /**
6666 * Main launches the server from the command line.
6767 */
68- public static void main (String [] args ) throws IOException , InterruptedException {
69- // The port on which the server should run.
70- int port = 50051 ;
71- // The port on which prometheus metrics are exposed.
72- int prometheusPort = 9464 ;
73-
74- if (args .length > 0 ) {
75- if ("--help" .equals (args [0 ])) {
76- System .err .println ("Usage: [port [prometheus_port]]" );
77- System .err .println ("" );
78- System .err .println (" port The port on which server will run. Defaults to " + port );
79- System .err .println (" prometheusPort The port to expose prometheus metrics. Defaults to " + prometheusPort );
80- System .exit (1 );
68+ public static void main (String [] args ) {
69+ try {
70+ // The port on which the server should run.
71+ int port = 50051 ;
72+ // The port on which prometheus metrics are exposed.
73+ int prometheusPort = 9464 ;
74+
75+ if (args .length > 0 ) {
76+ if ("--help" .equals (args [0 ])) {
77+ System .err .println ("Usage: [port [prometheus_port]]" );
78+ System .err .println ("" );
79+ System .err .println (" port The port on which server will run. Defaults to " + port );
80+ System .err .println (" prometheusPort The port to expose prometheus metrics. Defaults to " + prometheusPort );
81+ System .exit (1 );
82+ }
83+ port = Integer .parseInt (args [0 ]);
84+ }
85+ if (args .length > 1 ) {
86+ prometheusPort = Integer .parseInt (args [1 ]);
8187 }
82- port = Integer .parseInt (args [0 ]);
83- }
84- if (args .length > 1 ) {
85- prometheusPort = Integer .parseInt (args [1 ]);
86- }
8788
88- // Adds a PrometheusHttpServer to convert OpenTelemetry metrics to Prometheus format and
89- // expose these via a HttpServer exporter to the SdkMeterProvider.
90- SdkMeterProvider sdkMeterProvider = SdkMeterProvider .builder ()
91- .registerMetricReader (
92- PrometheusHttpServer .builder ().setPort (prometheusPort ).build ())
93- .build ();
94-
95- // Initialize OpenTelemetry SDK with MeterProvider configured with Prometheus metrics exporter
96- OpenTelemetrySdk openTelemetrySdk =
97- OpenTelemetrySdk .builder ().setMeterProvider (sdkMeterProvider ).build ();
98-
99- // Initialize gRPC OpenTelemetry.
100- // Following client metrics are enabled by default :
101- // 1. grpc.server.call.started
102- // 2. grpc.server.call.sent_total_compressed_message_size
103- // 3. grpc.server.call.rcvd_total_compressed_message_size
104- // 4. grpc.server.call.duration
105- GrpcOpenTelemetry grpcOpenTelmetry = GrpcOpenTelemetry .newBuilder ()
106- .sdk (openTelemetrySdk )
107- .build ();
108- // Registers gRPC OpenTelemetry globally.
109- grpcOpenTelmetry .registerGlobal ();
110-
111- final OpenTelemetryServer server = new OpenTelemetryServer ();
112- server .start (port );
113-
114- Runtime .getRuntime ().addShutdownHook (new Thread () {
115- @ Override
116- public void run () {
117- System .err .println ("*** shutting down gRPC server since JVM is shutting down" );
118- try {
119- server .stop ();
120- } catch (InterruptedException e ) {
121- e .printStackTrace (System .err );
89+ // Adds a PrometheusHttpServer to convert OpenTelemetry metrics to Prometheus format and
90+ // expose these via a HttpServer exporter to the SdkMeterProvider.
91+ SdkMeterProvider sdkMeterProvider = SdkMeterProvider .builder ()
92+ .registerMetricReader (
93+ PrometheusHttpServer .builder ().setPort (prometheusPort ).build ())
94+ .build ();
95+
96+ // Initialize OpenTelemetry SDK with MeterProvider configured with Prometheus metrics exporter
97+ OpenTelemetrySdk openTelemetrySdk =
98+ OpenTelemetrySdk .builder ().setMeterProvider (sdkMeterProvider ).build ();
99+
100+ // Initialize gRPC OpenTelemetry.
101+ // Following client metrics are enabled by default :
102+ // 1. grpc.server.call.started
103+ // 2. grpc.server.call.sent_total_compressed_message_size
104+ // 3. grpc.server.call.rcvd_total_compressed_message_size
105+ // 4. grpc.server.call.duration
106+ GrpcOpenTelemetry grpcOpenTelmetry = GrpcOpenTelemetry .newBuilder ()
107+ .sdk (openTelemetrySdk )
108+ .build ();
109+ // Registers gRPC OpenTelemetry globally.
110+ grpcOpenTelmetry .registerGlobal ();
111+
112+ final OpenTelemetryServer server = new OpenTelemetryServer ();
113+ server .start (port );
114+
115+ Runtime .getRuntime ().addShutdownHook (new Thread () {
116+ @ Override
117+ public void run () {
118+ System .err .println ("*** shutting down gRPC server since JVM is shutting down" );
119+ try {
120+ server .stop ();
121+ } catch (InterruptedException e ) {
122+ e .printStackTrace (System .err );
123+ }
124+ // Shut down OpenTelemetry SDK.
125+ openTelemetrySdk .close ();
126+
127+ System .err .println ("*** server shut down" );
122128 }
123- // Shut down OpenTelemetry SDK.
124- openTelemetrySdk .close ();
129+ });
125130
126- System .err .println ("*** server shut down" );
127- }
128- });
129-
130- server .blockUntilShutdown ();
131+ server .blockUntilShutdown ();
132+ } catch (Throwable t ) {
133+ System .err .println ("crash" );
134+ }
131135 }
132136
133137 static class GreeterImpl extends GreeterGrpc .GreeterImplBase {
0 commit comments