GRPC.Telemetry (gRPC v0.11.4)
View SourceEvents published by GRPC
These can be divided in client-side events and server-side events.
Client-side Events
[:grpc, :client, :rpc, :start]- Published before all interceptors are executed.[:grpc, :client, :rpc, :stop]- Published after all interceptors executed successfully.:duration- the duration as measured throughSystem.monotonic_time()for the whole interceptor pipeline.
[:grpc, :client, :rpc, :exception]- Published if any exception occurs while receiving a message.:duration- the duration as measured throughSystem.monotonic_time()for the execution since the start of the pipeline until the exception happened.
| event | measurements | metadata |
|---|---|---|
[:rpc, :start] | :count | :stream |
[:rpc, :stop] | :duration | :stream |
[:rpc, :exception] | :duration | :stream, :kind, :reason, :stacktrace |
Metadata
:stream- the%GRPC.Server.Stream{}for the request:function_name- the name of the function called:server- the server module name:endpoint- the endpoint module name:request- the client request:result- the result returned from the interceptor pipeline.
:exception events also include some error metadata:
:reasonis the error value in case ofcatchor the actual exception in case ofrescue.:kindcan be one of::error— from an{:error, error}return value. Some Erlang functions may also throw an:errortuple, which will be reported as:error.:exit— from a caught process exit.:throw— from a caught value, this doesn't necessarily mean that an error occurred.
Server-side Events
[:grpc, :server, :rpc, :start]- Published before all interceptors are executed.[:grpc, :server, :rpc, :stop]- Published after all interceptors executed successfully.:duration- the duration as measured throughSystem.monotonic_time()for the whole interceptor pipeline.
[:grpc, :server, :rpc, :exception]- Published if any exception occurs while receiving a message.:duration- the duration as measured throughSystem.monotonic_time()for the execution since the start of the pipeline until the exception happened.
| event | measurements | metadata |
|---|---|---|
[:rpc, :start] | :count | :stream, :server, :endpoint, :function_name |
[:rpc, :stop] | :duration | :stream, :server, :endpoint, :function_name , :result |
[:rpc, :exception] | :duration | :stream, :server, :endpoint, :function_name, :kind, :reason, :stacktrace |
Metadata
:stream- the%GRPC.Server.Stream{}for the request.:function_name- the name of the function called.:server- the server module name.:endpoint- the endpoint module name.:result- the result returned from the interceptor pipeline.
:exception events also include some error metadata:
:reasonis the error value in case ofcatchor the actual exception in case ofrescue.:kindcan be one of::error— from an{:error, error}return value. Some Erlang functions may also throw an:errortuple, which will be reported as:error.:exit— from a caught process exit.:throw— from a caught value, this doesn't necessarily mean that an error occurred.