Juniper Networks · AsyncAPI Specification

Junos Telemetry Interface (JTI) Streaming

Version 1.0

Junos Telemetry Interface provides real-time streaming telemetry from Juniper Networks devices using gRPC or UDP protocols. JTI pushes operational data from Junos devices at configured intervals, replacing traditional SNMP polling with high-frequency, model-driven telemetry. Supported data includes interface statistics, routing table changes, firewall filter counters, optics diagnostics, system resource utilization, and protocol-specific metrics. Data is encoded in Google Protocol Buffers (GPB) format or OpenConfig-modeled JSON/YANG. JTI supports both dial-out (device-initiated) and dial-in (collector-initiated via gNMI) modes. This specification covers the dial-out streaming model where Junos devices publish telemetry to configured collector endpoints.

View Spec View on GitHub AutomationCloudData CenterEnterpriseNetworkingSDNSecurityAsyncAPIWebhooksEvents

Channels

/interfaces
subscribe onInterfaceStats
Interface statistics telemetry stream
Channel for interface telemetry data. Provides real-time statistics for physical and logical interfaces including packet counts, byte counts, error counters, queue depths, and interface operational status. Sensor path: /junos/system/linecard/interface/
/routing
subscribe onRoutingTelemetry
Routing protocol telemetry stream
Channel for routing telemetry. Provides BGP session state changes, route count updates, and routing table modifications. Sensor paths include /junos/routing/ for Junos-native and OpenConfig BGP paths.
/system-resources
subscribe onSystemResources
System resource utilization telemetry stream
Channel for system resource telemetry. Reports CPU utilization, memory usage, storage capacity, and routing engine temperature for capacity planning and health monitoring. Sensor path: /junos/system/
/firewall
subscribe onFirewallCounters
Firewall filter counter telemetry stream
Channel for firewall filter counter telemetry. Provides real-time packet and byte counts for configured firewall filter terms. Sensor path: /junos/system/linecard/firewall/
/optics
subscribe onOpticsDiagnostics
Optical diagnostics telemetry stream
Channel for optical transceiver diagnostics. Reports real-time optical power levels, laser bias current, temperature, and voltage for SFP/QSFP transceivers. Used for proactive link failure detection. Sensor path: /junos/system/linecard/optics/

Messages

InterfaceStatsMessage
Interface Statistics Telemetry
Real-time interface counter data including ingress/egress packet and byte counts, error counters, and queue statistics. Published at the configured reporting rate (typically 2-30 seconds).
RoutingMessage
Routing Protocol Telemetry
BGP session state and route count telemetry data. Reports peer session transitions, received/advertised prefix counts, and route table summary statistics.
SystemResourceMessage
System Resource Telemetry
System resource utilization data including CPU, memory, and temperature readings from routing engines and line cards.
FirewallMessage
Firewall Filter Counter Telemetry
Real-time firewall filter counter data for configured filter terms. Reports packet and byte match counts per filter term.
OpticsMessage
Optical Transceiver Diagnostics Telemetry
Optical transceiver diagnostic readings including power levels, bias current, temperature, and voltage for SFP/QSFP modules.

Servers

grpc
grpcCollector {collectorHost}:{collectorPort}
gRPC telemetry collector endpoint. Junos devices establish a persistent gRPC stream to the collector and push telemetry data at the configured reporting interval. Configure the collector address on Junos devices under services analytics streaming-server.
udp
udpCollector {collectorHost}:{collectorPort}
UDP telemetry collector for native GPB-encoded sensor data. Junos devices send UDP datagrams containing serialized Protocol Buffer messages to the collector. Configured under services analytics export-profile with transport udp.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Junos Telemetry Interface (JTI) Streaming
  version: '1.0'
  description: >-
    Junos Telemetry Interface provides real-time streaming telemetry from
    Juniper Networks devices using gRPC or UDP protocols. JTI pushes
    operational data from Junos devices at configured intervals, replacing
    traditional SNMP polling with high-frequency, model-driven telemetry.
    Supported data includes interface statistics, routing table changes,
    firewall filter counters, optics diagnostics, system resource utilization,
    and protocol-specific metrics. Data is encoded in Google Protocol Buffers
    (GPB) format or OpenConfig-modeled JSON/YANG. JTI supports both dial-out
    (device-initiated) and dial-in (collector-initiated via gNMI) modes.
    This specification covers the dial-out streaming model where Junos
    devices publish telemetry to configured collector endpoints.
  contact:
    name: Juniper Networks Support
    url: https://www.juniper.net/documentation/us/en/software/junos/interfaces-telemetry/index.html
  license:
    name: Proprietary
    url: https://www.juniper.net/us/en/legal-notices.html
servers:
  grpcCollector:
    url: '{collectorHost}:{collectorPort}'
    protocol: grpc
    description: >-
      gRPC telemetry collector endpoint. Junos devices establish a persistent
      gRPC stream to the collector and push telemetry data at the configured
      reporting interval. Configure the collector address on Junos devices
      under services analytics streaming-server.
    variables:
      collectorHost:
        description: Hostname or IP of the telemetry collector.
      collectorPort:
        description: gRPC port on the collector.
        default: '50051'
  udpCollector:
    url: '{collectorHost}:{collectorPort}'
    protocol: udp
    description: >-
      UDP telemetry collector for native GPB-encoded sensor data. Junos
      devices send UDP datagrams containing serialized Protocol Buffer
      messages to the collector. Configured under services analytics
      export-profile with transport udp.
    variables:
      collectorHost:
        description: Hostname or IP of the telemetry collector.
      collectorPort:
        description: UDP port on the collector.
        default: '21000'
channels:
  /interfaces:
    description: >-
      Channel for interface telemetry data. Provides real-time statistics
      for physical and logical interfaces including packet counts, byte
      counts, error counters, queue depths, and interface operational status.
      Sensor path: /junos/system/linecard/interface/
    subscribe:
      operationId: onInterfaceStats
      summary: Interface statistics telemetry stream
      message:
        $ref: '#/components/messages/InterfaceStatsMessage'
  /routing:
    description: >-
      Channel for routing telemetry. Provides BGP session state changes,
      route count updates, and routing table modifications. Sensor paths
      include /junos/routing/ for Junos-native and OpenConfig BGP paths.
    subscribe:
      operationId: onRoutingTelemetry
      summary: Routing protocol telemetry stream
      message:
        $ref: '#/components/messages/RoutingMessage'
  /system-resources:
    description: >-
      Channel for system resource telemetry. Reports CPU utilization,
      memory usage, storage capacity, and routing engine temperature
      for capacity planning and health monitoring.
      Sensor path: /junos/system/
    subscribe:
      operationId: onSystemResources
      summary: System resource utilization telemetry stream
      message:
        $ref: '#/components/messages/SystemResourceMessage'
  /firewall:
    description: >-
      Channel for firewall filter counter telemetry. Provides real-time
      packet and byte counts for configured firewall filter terms.
      Sensor path: /junos/system/linecard/firewall/
    subscribe:
      operationId: onFirewallCounters
      summary: Firewall filter counter telemetry stream
      message:
        $ref: '#/components/messages/FirewallMessage'
  /optics:
    description: >-
      Channel for optical transceiver diagnostics. Reports real-time
      optical power levels, laser bias current, temperature, and voltage
      for SFP/QSFP transceivers. Used for proactive link failure detection.
      Sensor path: /junos/system/linecard/optics/
    subscribe:
      operationId: onOpticsDiagnostics
      summary: Optical diagnostics telemetry stream
      message:
        $ref: '#/components/messages/OpticsMessage'
components:
  messages:
    InterfaceStatsMessage:
      name: InterfaceStatsMessage
      title: Interface Statistics Telemetry
      summary: >-
        Real-time interface counter data including ingress/egress packet
        and byte counts, error counters, and queue statistics. Published
        at the configured reporting rate (typically 2-30 seconds).
      contentType: application/x-protobuf
      payload:
        type: object
        properties:
          system_id:
            type: string
            description: Device hostname or system identifier.
          component_id:
            type: integer
            description: Line card slot number.
          sensor_name:
            type: string
            description: Sensor resource path.
          sequence_number:
            type: integer
            description: Monotonically increasing sequence number.
          timestamp:
            type: integer
            description: Data collection timestamp in milliseconds since epoch.
          interface_stats:
            type: array
            items:
              type: object
              properties:
                if_name:
                  type: string
                  description: Interface name (e.g., et-0/0/0).
                init_time:
                  type: integer
                  description: Interface initialization time.
                snmp_if_index:
                  type: integer
                  description: SNMP interface index.
                ingress_stats:
                  type: object
                  properties:
                    if_pkts:
                      type: integer
                      description: Total ingress packets.
                    if_octets:
                      type: integer
                      description: Total ingress bytes.
                    if_ucast_pkts:
                      type: integer
                      description: Unicast packets received.
                    if_mcast_pkts:
                      type: integer
                      description: Multicast packets received.
                    if_errors:
                      type: integer
                      description: Ingress error count.
                    if_discards:
                      type: integer
                      description: Ingress discard count.
                egress_stats:
                  type: object
                  properties:
                    if_pkts:
                      type: integer
                      description: Total egress packets.
                    if_octets:
                      type: integer
                      description: Total egress bytes.
                    if_ucast_pkts:
                      type: integer
                    if_mcast_pkts:
                      type: integer
                    if_errors:
                      type: integer
                    if_discards:
                      type: integer
                egress_queue_info:
                  type: array
                  items:
                    type: object
                    properties:
                      queue_number:
                        type: integer
                      packets:
                        type: integer
                      bytes:
                        type: integer
                      tail_drop_packets:
                        type: integer
                      red_drop_packets:
                        type: integer
                  description: Per-queue egress statistics.
                op_state:
                  type: string
                  enum:
                    - up
                    - down
                  description: Interface operational state.
    RoutingMessage:
      name: RoutingMessage
      title: Routing Protocol Telemetry
      summary: >-
        BGP session state and route count telemetry data. Reports peer
        session transitions, received/advertised prefix counts, and
        route table summary statistics.
      contentType: application/x-protobuf
      payload:
        type: object
        properties:
          system_id:
            type: string
          timestamp:
            type: integer
          bgp_peers:
            type: array
            items:
              type: object
              properties:
                peer_address:
                  type: string
                  description: BGP peer IP address.
                peer_as:
                  type: integer
                  description: BGP peer autonomous system number.
                local_as:
                  type: integer
                  description: Local autonomous system number.
                peer_state:
                  type: string
                  enum:
                    - established
                    - active
                    - idle
                    - connect
                    - openconfirm
                    - opensent
                  description: BGP session state.
                received_prefixes:
                  type: integer
                  description: Number of prefixes received from peer.
                accepted_prefixes:
                  type: integer
                  description: Number of prefixes accepted from peer.
                advertised_prefixes:
                  type: integer
                  description: Number of prefixes advertised to peer.
                up_time:
                  type: integer
                  description: Session uptime in seconds.
                last_error:
                  type: string
                  description: Last BGP notification error message.
    SystemResourceMessage:
      name: SystemResourceMessage
      title: System Resource Telemetry
      summary: >-
        System resource utilization data including CPU, memory, and
        temperature readings from routing engines and line cards.
      contentType: application/x-protobuf
      payload:
        type: object
        properties:
          system_id:
            type: string
          timestamp:
            type: integer
          routing_engine:
            type: array
            items:
              type: object
              properties:
                slot:
                  type: integer
                  description: Routing engine slot number.
                cpu_idle:
                  type: number
                  description: CPU idle percentage.
                cpu_user:
                  type: number
                  description: CPU user-space percentage.
                cpu_system:
                  type: number
                  description: CPU system percentage.
                memory_total:
                  type: integer
                  description: Total memory in bytes.
                memory_used:
                  type: integer
                  description: Used memory in bytes.
                memory_buffer:
                  type: integer
                  description: Buffer memory in bytes.
                temperature:
                  type: number
                  description: Routing engine temperature in Celsius.
                uptime:
                  type: integer
                  description: Routing engine uptime in seconds.
    FirewallMessage:
      name: FirewallMessage
      title: Firewall Filter Counter Telemetry
      summary: >-
        Real-time firewall filter counter data for configured filter terms.
        Reports packet and byte match counts per filter term.
      contentType: application/x-protobuf
      payload:
        type: object
        properties:
          system_id:
            type: string
          timestamp:
            type: integer
          firewall_stats:
            type: array
            items:
              type: object
              properties:
                filter_name:
                  type: string
                  description: Firewall filter name.
                counter_name:
                  type: string
                  description: Counter term name.
                packets:
                  type: integer
                  description: Matched packet count.
                bytes:
                  type: integer
                  description: Matched byte count.
    OpticsMessage:
      name: OpticsMessage
      title: Optical Transceiver Diagnostics Telemetry
      summary: >-
        Optical transceiver diagnostic readings including power levels,
        bias current, temperature, and voltage for SFP/QSFP modules.
      contentType: application/x-protobuf
      payload:
        type: object
        properties:
          system_id:
            type: string
          timestamp:
            type: integer
          optics_diag:
            type: array
            items:
              type: object
              properties:
                if_name:
                  type: string
                  description: Interface name.
                module_temperature:
                  type: number
                  description: Module temperature in Celsius.
                module_voltage:
                  type: number
                  description: Module supply voltage in volts.
                lanes:
                  type: array
                  items:
                    type: object
                    properties:
                      lane_number:
                        type: integer
                      laser_output_power_dbm:
                        type: number
                        description: Laser output power in dBm.
                      laser_rx_power_dbm:
                        type: number
                        description: Receiver input power in dBm.
                      laser_bias_current_ma:
                        type: number
                        description: Laser bias current in milliamps.
                      laser_output_power_high_alarm:
                        type: boolean
                      laser_rx_power_low_alarm:
                        type: boolean
                  description: Per-lane optical diagnostics.