Skip to content

Files

Latest commit

May 21, 2025
c1df16b · May 21, 2025

History

History
81 lines (65 loc) · 6.04 KB

diagnostic.md

File metadata and controls

81 lines (65 loc) · 6.04 KB

Diagnostic

Support for diagnostic and instrumentation is provided via Node.js Diagnostic Channel API.

Execution model for tracing channels

The presence of the result and error properties and the order of tracing channels events follows the current pseudo-code flow:

function operation(options, callback) {
  const channel = tracingChannel('plt:kafka:example')
  const context = { operationId: 0n, options }

  try {
    channel.start.publish(context)

    doSomethingAsync((error, result) => {
      if (error) {
        context.error = error
        channel.error.publish(context)
        channel.asyncStart.publish(context)
        callback(error)
        channel.asyncEnd.publish(context)

        return
      }

      context.result = result
      channel.asyncStart.publish(context)
      callback(error)
      channel.asyncEnd.publish(context)
    })

    channel.end.publish(context)
  } catch (error) {
    context.error = error
    channel.error.publish(context)
    channel.end.publish(context)
  }
}

Common properties

Each tracing channel publishes events with the following common properties:

Name Type Description
connection Connection The current connection. This is only used by the plt:kafka:connections:connects and plt:kafka:connections:api channels
connectionPool ConnectionPool The current connection pool. This is only used by the plt:kafka:connections:pools:gets channel.
client Depends on the operation The current client. It can be a Base, Admin, Producer or Consumer if appropriate.
operationId bigint The current operation ID. This is unique across all channels.
result Depends on the operation The result of the operation. This is only present in the asyncStart and asyncEnd events.
error Error The error thrown by the operation. This is only present in the error event.

Published channels

Name Description
plt:kafka:instances Notifies any creation of a Connection, ConnectionPool, Base, Admin, Producer, Consumer or MessagesStream. This channel will publish objects with the type and instance property.

Published tracing channels

Name Target Description
plt:kafka:connections:connects Connection Traces a connection attempt to a broker.
plt:kafka:connections:api Connection Traces a low level API request.
plt:kafka:connections:pools:gets ConnectionPool Traces a connection retrieval attempt from a connection pool.
plt:kafka:base:apis Base Traces a Base.listApis request.
plt:kafka:base:metadata Base Traces a Base.metadata request.
plt:kafka:admin:topics Admin Traces a Admin.createTopics or Admin.deleteTopics request.
plt:kafka:admin:groups Admin Traces a Admin.listGroups, Admin.describeGroups or Admin.deleteGroups request.
plt:kafka:producer:initIdempotent Producer Traces a Producer.initIdempotentProducer request.
plt:kafka:producer:sends Producer Traces a Producer.send request.
plt:kafka:consumer:group Consumer Traces a Consumer.findGroupCoordinator, Consumer.joinGroup or Consumer.leaveGroup requests.
plt:kafka:consumer:heartbeat Consumer Traces the Consumer heartbeat requests.
plt:kafka:consumer:receives Consumer Traces processing of every message.
plt:kafka:consumer:fetches Consumer Traces a Consumer.fetch request.
plt:kafka:consumer:consumes Consumer Traces a Consumer.consume request.
plt:kafka:consumer:commits Consumer Traces a Consumer.commit request.
plt:kafka:consumer:offsets Consumer Traces a Consumer.listOffsets or Consumer.listCommittedOffsets request.