View Source Bandit.Telemetry (Bandit v1.0.0-pre.13)

The following telemetry spans are emitted by bandit

[:bandit, :request, *]

Represents Bandit handling a specific client HTTP request

This span is started by the following event:

  • [:bandit, :request, :start]

    Represents the start of the span

    This event contains the following measurements:

    • monotonic_time: The time of this event, in :native units

    This event contains the following metadata:

    • telemetry_span_context: A unique identifier for this span
    • connection_telemetry_span_context: The span context of the Thousand Island :connection span which contains this request

This span is ended by the following event:

  • [:bandit, :request, :stop]

    Represents the end of the span

    This event contains the following measurements:

    • monotonic_time: The time of this event, in :native units
    • duration: The span duration, in :native units
    • req_header_end_time: The time that header reading completed, in :native units
    • req_body_start_time: The time that request body reading started, in :native units.
    • req_body_end_time: The time that request body reading completed, in :native units
    • req_line_bytes: The length of the request line, in octets. Includes all line breaks. Not included for HTTP/2 requests
    • req_header_bytes: The length of the request headers, in octets. Includes all line breaks. Not included for HTTP/2 requests
    • req_body_bytes: The length of the request body, in octets
    • resp_start_time: The time that the response started, in :native units
    • resp_end_time: The time that the response completed, in :native units. Not included for chunked responses
    • resp_line_bytes: The length of the reponse line, in octets. Includes all line breaks. Not included for HTTP/2 requests
    • resp_header_bytes: The length of the reponse headers, in octets. Includes all line breaks. Not included for HTTP/2 requests
    • resp_body_bytes: The length of the reponse body, in octets. If the response is compressed, this is the size of the compressed payload as sent on the wire. Set to 0 for chunked responses
    • resp_uncompressed_body_bytes: The length of the original, uncompressed body. Only included for responses which are compressed
    • resp_compression_method: The method of compression, as sent in the Content-Encoding header of the response. Only included for responses which are compressed

    This event contains the following metadata:

    • telemetry_span_context: A unique identifier for this span
    • connection_telemetry_span_context: The span context of the Thousand Island :connection span which contains this request
    • method: The HTTP method of the request. If Bandit could not determine the method, this will be nil
    • request_target: The raw request target for the request. Returned as a tuple comprising the constituent parts of the request target: {scheme, host, port, path}. If Bandit could not determine the request target, this will be nil
    • status: The numeric response status code of the response
    • conn: The Plug.Conn representing this connection. Not present in cases where error is also set
    • stream_id: The stream ID of the request, if part of an HTTP/2 connection
    • error: The error that caused the span to end, if it ended in error

The following events may be emitted within this span:

  • [:bandit, :request, :exception]

    The request for this span ended unexpectedly

    This event contains the following measurements:

    • monotonic_time: The time of this event, in :native units

    This event contains the following metadata:

    • telemetry_span_context: A unique identifier for this span
    • connection_telemetry_span_context: The span context of the Thousand Island :connection span which contains this request
    • kind: The kind of unexpected condition, typically :exit
    • exception: The exception which caused this unexpected termination
    • stacktrace: The stacktrace of the location which caused this unexpected termination

[:bandit, :websocket, *]

Represents Bandit handling a WebSocket connection

This span is started by the following event:

  • [:bandit, :websocket, :start]

    Represents the start of the span

    This event contains the following measurements:

    • monotonic_time: The time of this event, in :native units
    • compress: Details about the compression configuration for this connection

    This event contains the following metadata:

    • telemetry_span_context: A unique identifier for this span
    • origin_telemetry_span_context: The span context of the Bandit :request span from which this connection originated
    • connection_telemetry_span_context: The span context of the Thousand Island :connection span which contains this request

This span is ended by the following event:

  • [:bandit, :websocket, :stop]

    Represents the end of the span

    This event contains the following measurements:

    • monotonic_time: The time of this event, in :native units
    • duration: The span duration, in :native units
    • recv_text_frame_count: The number of text frames received
    • recv_text_frame_bytes: The total number of bytes received in the payload of text frames
    • recv_binary_frame_count: The number of binary frames received
    • recv_binary_frame_bytes: The total number of bytes received in the payload of binary frames
    • recv_ping_frame_count: The number of ping frames received
    • recv_ping_frame_bytes: The total number of bytes received in the payload of ping frames
    • recv_pong_frame_count: The number of pong frames received
    • recv_pong_frame_bytes: The total number of bytes received in the payload of pong frames
    • recv_connection_close_frame_count: The number of connection close frames received
    • recv_connection_close_frame_bytes: The total number of bytes received in the payload of connection close frames
    • recv_continuation_frame_count: The number of continuation frames received
    • recv_continuation_frame_bytes: The total number of bytes received in the payload of continuation frames
    • send_text_frame_count: The number of text frames sent
    • send_text_frame_bytes: The total number of bytes sent in the payload of text frames
    • send_binary_frame_count: The number of binary frames sent
    • send_binary_frame_bytes: The total number of bytes sent in the payload of binary frames
    • send_ping_frame_count: The number of ping frames sent
    • send_ping_frame_bytes: The total number of bytes sent in the payload of ping frames
    • send_pong_frame_count: The number of pong frames sent
    • send_pong_frame_bytes: The total number of bytes sent in the payload of pong frames
    • send_connection_close_frame_count: The number of connection close frames sent
    • send_connection_close_frame_bytes: The total number of bytes sent in the payload of connection close frames
    • send_continuation_frame_count: The number of continuation frames sent
    • send_continuation_frame_bytes: The total number of bytes sent in the payload of continuation frames

    This event contains the following metadata:

    • telemetry_span_context: A unique identifier for this span
    • origin_telemetry_span_context: The span context of the Bandit :request span from which this connection originated
    • connection_telemetry_span_context: The span context of the Thousand Island :connection span which contains this request
    • error: The error that caused the span to end, if it ended in error

Summary

Types

@opaque t()

Functions

@spec monotonic_time() :: integer()

See System.monotonic_time/0.

Link to this function

span_exception(span, kind, exception, stacktrace)

View Source
@spec span_exception(t(), Exception.kind(), Exception.t(), Exception.stacktrace()) ::
  :ok