Pktvisor
The pktvisor backend embeds the pktvisord process inside Orb Agent to run deep packet analytics, active probes, and streaming aggregations directly at the edge. Pktvisor policies let you decide which network taps to activate, which analyzers to run, and how the resulting metrics are exported to your observability stack.
Reference
The two sections of a policy have a folder each.
| Page | Contents |
|---|---|
| Inputs | The data streams a policy can consume, and how a tap is declared. Covers pcap, flow and dnstap inline, with netprobe on its own page. |
| Handlers | The handler section, the available handler types and versions, metric groups, and the settings shared by every handler. One page per handler: DNS, Network, Flow, DHCP, BGP, Packet capture, Netprobe, Input resources. |
| Metrics | The metrics each handler produces. The input_resources metrics are on its own page. |
Configuration
Orb writes a temporary pktvisor configuration file on startup based on the orb.backends.pktvisor block. Any key that is not handled explicitly is forwarded to visor.config in the generated file, so you can pass through native pktvisor options such as logging, crashpad, or custom data paths when needed.
Backend settings
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
host | string | no | localhost | Admin API host. Written to visor.config.host, which is the address the pktvisord the agent starts binds its admin API to, and the address the agent uses to reach it. Change it only to alter that bind address. |
port | string | no | 10853 | Admin API port. Written to visor.config.port, which is the port pktvisord binds its admin API to. |
taps | map | no | – | Declarative tap definitions copied into visor.taps. Each tap sets the data source (input_type, config, and optional tags). Not validated as required, but an agent with no taps has nothing for a policy to analyse. |
| other keys | any | no | – | Added verbatim under visor.config (for example log_level, crashpad options, or storage paths). |
Pktvisor ships with the Orb agent container image. If you run Orb on a bare host, ensure the pktvisord binary is in $PATH or adjust your deployment accordingly.
Taps
A tap names a data source once, on the agent, so that policies can refer to it.
Each tap sets an input_type, its config, and optional tags that a policy can
select on. See Inputs for the configuration each input type accepts.
A tap has no filter key: filters belong to the policy's input, and a filter
written on a tap is ignored without an error. For packet capture a BPF expression
can also go in the tap's config, since pcap accepts bpf there.
orb:
backends:
pktvisor:
host: 0.0.0.0
port: "10853"
taps:
edge_dns:
input_type: pcap
config:
iface: eth0
bpf: "port 53"
sflow:
input_type: flow
config:
flow_type: sflow
port: 6343
bind: 192.168.1.1
tags:
virtual: false
vhost: 2
common:
otlp:
http: "http://otel-collector.monitoring.svc.cluster.local:4318"Exporting pktvisor metrics
pktvisord can stream OpenTelemetry HTTP metrics directly to a collector. Configure the shared backends.common.otlp section, as in the example above, to point Orb Agent at your collector endpoint.
Policy structure
Define pktvisor policies under orb.policies.pktvisor. Each entry key becomes the policy name pushed to pktvisord, and the agent wraps the body you write in the envelope pktvisord expects, so the body is just the four sections below.
orb:
policies:
pktvisor:
my_policy:
input: ...
handlers: ...
config: ...
kind: collection| Section | Required | Description |
|---|---|---|
input | yes | The data stream to analyse: a tap name or tag selector, plus the input type and any filters. |
handlers | yes | The analyzer modules to run on that input, and their configuration, filters and metric groups. |
config | no | Policy level settings. Currently only merge_like_handlers. |
kind | yes | The only supported value is collection. |
A policy name must be unique within the backend. Policy, tap and handler module
names must match [a-zA-Z_][a-zA-Z0-9_-]*, so they start with a letter or
underscore and contain only letters, digits, _ or -.
Example policy
The following policy inspects DNS traffic captured from the edge_dns tap and runs both DNS-specific and network-wide analytics. Use this pattern when you want to reuse a tap across multiple handlers.
orb:
policies:
pktvisor:
edge_dns_inspection:
input:
input_type: pcap
tap: edge_dns
config:
merge_like_handlers: true
handlers:
window_config:
num_periods: 5
deep_sample_rate: 100
modules:
dns_summary:
type: dns
require_version: "2.0"
metric_groups:
enable:
- counters
- quantiles
config:
public_suffix_list: true
topn_count: 25
net_overview:
type: net
kind: collectionNote the require_version: "2.0" on the DNS module. A module that omits require_version runs version 1.0 of that handler; see available handlers.
Additional resources
- Pktvisor project home - feature overview, module reference, and deployment notes.
Device Discovery - Supported Platforms
This page lists the vendors, operating systems, and NAPALM drivers supported by the device discovery backend - currently 48 drivers (7 standard + 41 custom) ...
Metrics
The metrics each handler produces, grouped by handler type. The inputresources handler is not listed here; its four metrics are on its own page. A handler em...