- General Workflow
- play_arrow Apstra GUI
- play_arrow Design
- Logical Devices (Datacenter Design)
- Interface Maps (Datacenter Design)
- Rack Types (Datacenter Design)
- Templates (Datacenter Design)
- Config Templates (Freeform Design)
- play_arrow Configlets (Datacenter Design)
- play_arrow Property Sets (Datacenter Design)
- TCP/UDP Port Aliases (Datacenter Design)
- Tags (Design)
- play_arrow Devices
- Device Configuration Lifecycle
- play_arrow Managed Devices
- play_arrow System Agents
- play_arrow Pristine Configuration
- play_arrow Telemetry
- play_arrow Apstra ZTP
- play_arrow Resources Introduction
- play_arrow Datacenter Reference Design
- Create / Delete Datacenter Blueprint
- Datacenter Blueprint Summary and Dashboard
- Assign Physical Resources (Datacenter)
- Assign Device Profiles
- play_arrow Configlets (Datacenter Blueprint)
- Topology (Datacenter)
- play_arrow Nodes (Datacenter)
- Assign Device (Datacenter)
- Unassign Device (Datacenter)
- Set Deploy Mode (Datacenter)
- Generic Systems vs. External Generic Systems
- Add Generic System
- Add External Generic System
- Add Access Switch
- Update Node Tags
- Update Port Channel ID Range
- Edit Hostname (Datacenter)
- Edit Generic System Name
- Edit Device Properties (Datacenter)
- View Node's Static Routes
- Delete Node
- play_arrow Links (Datacenter)
- Add Links to Leaf
- Add Links to Spine
- Add Links to Generic System
- Add Links to External Generic System
- Add Leaf Peer Links
- Form LAG
- Break LAG
- Update LAG Mode
- Update Link Tags
- Update Link Speed
- Update Link Properties
- Delete Link (Datacenter)
- Import / Export Cabling Map (Datacenter)
- Edit Cabling Map (Datacenter)
- Fetch Discovered LLDP Data (Datacenter)
- play_arrow Racks (Datacenter)
- play_arrow Pods (Datacenter)
- play_arrow Planes (Datacenter)
- play_arrow Virtual Networks
- play_arrow Routing Zones
- Static Routes (Virtual)
- Protocol Sessions (Virtual)
- Data Center Interconnect (DCI) / Remote EVPN Gateways (Virtual)
- play_arrow Virtual Infra (Virtual)
- play_arrow Endpoints Overview (Virtual)
- play_arrow Policies (Datacenter) Staged
- Logical Devices (Datacenter Blueprint)
- Interface Maps (Datacenter Blueprint)
- play_arrow Property Sets (Datacenter Blueprint)
- AAA Servers (Datacenter Blueprint)
- Tags (Datacenter Blueprint)
- Tasks (Datacenter) Staged
- play_arrow Connectivity Templates
- play_arrow Primitives
- Virtual Network (Single) Primitive
- Virtual Network (Multiple) Primitive
- IP Link Primitive
- Static Route Primitive
- Custom Static Route Primitive
- BGP Peering (IP Endpoint) Primitive
- BGP Peering (Generic System) Primitive
- Dynamic BGP Peering Primitive
- Routing Policy Primitive
- Routing Zone Constraint Primitive
- User-defined
- Pre-defined
- Create Connectivity Template for Multiple VNs on Same Interface (Example)
- Create Connectivity Template for Layer 2 Connected External Router (Example)
- Assign Connectivity Template
- Edit Connectivity Template
- Delete Connectivity Template
- play_arrow Active (Datacenter Blueprint)
- BGP Route Tagging
- play_arrow Freeform Reference Design
- Create / Delete Freeform Blueprint
- Freeform Blueprint Summary and Dashboard
- Topology (Freeform)
- play_arrow Systems (Freeform)
- Device Context (Freeform)
- play_arrow Links (Freeform)
- play_arrow Resource Management
- play_arrow Config Templates (Freeform Blueprint)
- Import Device Profile (Freeform)
- play_arrow Property Sets (Freeform Blueprints)
- play_arrow Tags (Freeform Blueprint)
- Tasks - Staged (Freeform)
- play_arrow Active
- Commit Blueprint
- Time Voyager
- play_arrow Providers (External Systems)
- play_arrow Platform
- play_arrow User/Role Management (Platform)
- play_arrow Security (Platform)
- Syslog Configuration (Platform)
- Receivers (Platform)
- Global Statistics (Platform)
- Event Log (Platform)
- play_arrow Apstra VM Clusters
- play_arrow Developers (Platform)
- play_arrow Juniper Technical Support
- Favorites & User
- play_arrow Apstra Server Management
- Monitor Apstra Server via CLI
- Restart Apstra Server
- Reset Apstra Server VM Password
- Reinstall Apstra Server
- Apstra Database Overview
- Back up Apstra Database
- Restore Apstra Database
- Reset Apstra Database
- Migrate Apstra Database
- Replace SSL Certificate on Apstra Server with Signed One
- Replace SSL Certificate on Apstra Server with Self-Signed One
- Change Apstra Server Hostname
- Apstra CLI Utility
- play_arrow Guides
- play_arrow References
- play_arrow Apstra Feature Matrix
- Qualified Devices and NOS Versions
- NOS Upgrade Paths (Devices)
- play_arrow Predefined Dashboards (Analytics)
- Device Environmental Health Summary Dashboard (New in 4.1.2)
- Device Health Summary Dashboard
- Device Telemetry Health Summary Dashboard (New in 4.1.2)
- Drain Validation Dashboard
- Throughput Health MLAG Dashboard
- Traffic Trends Dashboard
- Virtual Infra Fabric Health Check Dashboard
- Virtual Infra Redundancy Check Dashboard
- play_arrow Predefined Probes (Analytics)
- BGP Session Flapping Probe
- Bandwidth Utilization Probe
- Critical Services: Utilization, Trending, Alerting Probe
- Device Environmental Checks Probe (New in 4.1.2)
- Device System Health Probe
- Device Telemetry Health Probe
- Device Traffic Probe
- Drain Traffic Anomaly Probe
- ECMP Imbalance (External Interfaces) Probe
- ECMP Imbalance (Fabric Interfaces) Probe
- ECMP Imbalance (Spine to Superspine Interfaces) Probe
- ESI Imbalance Probe
- EVPN Host Flapping Probe
- EVPN VXLAN Type-3 Route Validation Probe
- EVPN VXLAN Type-5 Route Validation Probe
- External Routes Probe
- Hot/Cold Interface Counters (Fabric Interfaces) Probe
- Hot/Cold Interface Counters (Specific Interfaces) Probe
- Hot/Cold Interface Counters (Spine to Superspine Interfaces) Probe
- Hypervisor and Fabric LAG Config Mismatch Probe (Virtual Infra)
- Hypervisor and Fabric VLAN Config Mismatch Probe (Virtual Infra)
- Hypervisor MTU Mismatch Probe (Virtual Infra NSX-T Only)
- Hypervisor MTU Threshold Check Probe (Virtual Infra)
- Hypervisor Missing LLDP Config Probe (Virtual Infra)
- Hypervisor Redundancy Checks Probe (Virtual Infra)
- Interface Flapping (Fabric Interfaces) Probe
- Interface Flapping (Specific Interfaces) Probe
- Interface Flapping (Specific Interfaces) Probe
- Interface Policy 802.1x Probe
- LAG Imbalance Probe
- Leafs Hosting Critical Services: Utilization, Trending, Alerting Probe
- Link Fault Tolerance in Leaf and Access LAGs Probe
- MLAG Imbalance Probe
- Multiagent Detector Probe
- Optical Transceivers Probe
- Packet Discard Percentage Probe
- Spine Fault Tolerance Probe
- Total East/West Traffic Probe
- VMs without Fabric Configured VLANs Probe (Virtual Infra)
- VXLAN Flood List Validation Probe
- play_arrow Probe Processors (Analytics)
- Processor: Accumulate
- Processor: Average
- Processor: Comparison
- Processor: EVPN Type 3
- Processor: EVPN Type 5
- Processor: Extensible Service Data Collector
- Processor: Generic Graph Collector
- Processor: Generic Service Data Collector
- Processor: Interface Counters
- Processor: Logical Operator
- Processor: Match Count
- Processor: Match Percentage
- Processor: Match String
- Processor: Max
- Processor: Min
- Processor: Periodic Average
- Processor: Range
- Processor: Ratio
- Processor: Service Data Collector
- Processor: Set Comparison
- Processor: Set Count
- Processor: Standard Deviation
- Processor: State
- Processor: Subtract
- Processor: Sum
- Processor: System Utilization
- Processor: Time in State
- Processor: Traffic Monitor
- Processor: Union
- Processor: VXLAN Floodlist
- Configlet Examples (Design)
- Apstra-CLI Commands
- Apstra EVPN Support Addendum
- Apstra Server Configuration File
- Agent Configuration File (Devices)
- Graph
- Juniper Apstra Technology Preview
Probes
IBA Probes Overview
Probes are the basic unit of abstraction in Intent-Based Analytics. Generally, a given probe consumes some set of data from the network, does various successive aggregations and calculations on it, and optionally specifies some conditions of said aggregations and calculations on which anomalies are raised.
Probes are Directed Acyclic Graphs (DAGs) where the nodes of the graph are processors and stages. Stages are data, associated with context, that can be inspected by the operator. Processors are sets of operations that produce and reduce output data from input data. The input to processors are one-or-many stages, and the output from processors are also one-or-many stages. The directionality of the edges in a probe DAG represent this input-to-output flow.
Importantly, the initial processors in a probe are special and do not have any input stage. They are notionally generators of data. We shall refer to these as source processors.
IBA works by ingesting raw telemetry from collectors into probes to extract knowledge (ex: anomalies, aggregations etc.). A given collector publishes telemetry as a collection of metrics, where each metric has identity (viz, set of key-value pairs) and a value. IBA probes, often with the use of graph queries, must fully specify the identity of a metric to ingest its value into the probe. With this feature, probes can ingest metrics with partial specification of identity using ingestion filters, thus enabling ingestion of metrics with unknown identities.
Some probes are created automatically. These probes will not be deleted automatically. This keeps things simple operationally and implementation-wise.
Processors
The input processors of a probe handle the required configuration to ingest raw
telemetry into the probe to kickstart the data processing pipeline. For these
processors, the number of stage output items (one or many) is equal to the
number of results in the specified graph query(s). If multiple graph queries are
specified, for example. graph_query: [A, B]
, and query A
matches 5 nodes and query B matches 10 nodes, results of query A will be
accessible using query_result
indices from 0 to 4, and results
of query B using indices from 5 to 14.
If a processor's input type and/or output type is not specified, then the processor takes a single input called in, and produces a single output called out.
Some processor fields are called expressions. In some cases, they are
graph queries and are so noted. In other cases, they are Python
expressions that yield a value. For example, in the Accumulate
processor, duration may be specified as integer with seconds, for example
900
, or as an expression, for example 60 *
15
. However, expressions could be more useful: there are multiple
ways to parametrize them.
Expressions support string values. Processor configuration parameters that are
strings and support expressions should use special quoting when specifying
static value. For example, state: "up"
is not valid because
it'll refer to the variable "up", not a static string, so it should be:
state: '"up"'
.
An expression is always associated with a graph query and is run for every resulting match of that query. The execution context of the expression is such that every variable specified in the query resolves to a named node in the associated match result. For more information, see Service Data Collector example.
Graph-based processors have been extended with query_tag_filter allowing the ability to filter graph query results by tags (new in version 4.0). In IBA probes, tags are used only as filter criteria for servers and external routers, specifically for the ECMP Imbalance (External Interfaces) probe and the Total East/West Traffic probe. For specific processor information, see Probe Processors in the References section.
Ingestion Filters
With "ingestion filters" one query result can ingest multiple metrics into a
probe. Table data types are used to store multiple metrics as part of a single
stage output item. Table data types include table_ns
,
table_dss
, table_ts
- to correspond to
existing types - ns
, dss
, ts
-respectively.
IBA Collection Filter
Collection filters determine the metrics that are collected from the target devices.
A collection filter for a given collector on a given device, is simply a collection of ingestion filters present in different probes. You can also specify it as part of enabling a service outside the context of IBA or probes but existing precedence rules for service enablement apply here - only filters at a given precedence level are aggregated. When multiple probes specify an ingestion filter targeting a specific service on a specific device, the metrics collected are a union - in other words, a metric is published when it matches any of the filters. This is why, the data is also filtered by the controller component prior to ingesting into the IBA probes.
This filter is evaluated by telemetry collectors, often to better control even what subset of available metrics is fetched from the underlying device operating system. For example, to fetch only a subset of routes instead of getting all routes which can be a huge number. In any case, only the metrics matching the collection filter are published as the raw telemetry.
As part of enabling a service on a device, you can now specify collection filters for services. This filter becomes an additional input provided to collectors as part of "self.service_config.collection_filters".
IBA Filter Format
Following are the design/usability goals for filters (ingestion and collection)
- Ease of authoring - given probe authors are the ones specifying it
- Most often cases are match any, match against a given list of possible values, equality match, range check if key has numeric values.
- Efficient evaluation - given the filters are evaluated in the hot paths of collection or ingestion.
- Aggregatable - multiple filters are aggregated so this aggregation logic need not become the responsibility of individual collectors.
- Programming language neutral - components operating on filters can be in Python or C++ or some other language in future.
- Programmable - be amenable to future programmability around the filters, by the controller itself and/or collectors, to enhance things like usability, performance etc.
Considering the above goals, following is a suggested and illustrative schema for filter1. Refer to ingestion filter sections for specific examples to understand this better.
FILTER_SCHEMA = s.Dict(s.Object( 'type': s.Enum(['any', 'equals', 'list', 'pattern', 'range', 'prefix']), 'value': s.OneOf({ 'equals': s.OneOf([s.String(), s.Integer()]), 'list': s.List(s.String(), validate=s.Length(min=1)), 'pattern': s.List(s.String(), validate=s.Length(min=1)), 'range': s.AnomalyRange(), validate=s.Length(min=1), 'prefix': s.Object({ 'prefixsubnet': s.Ipv6orIpv4NetworkAddress(), 'ge_mask': s.Optional(s.Integer()), 'le_mask': s.Optional(s.Integer()), 'eq_mask': s.Optional(s.Integer()) }) ), key_type=s.String(description= 'Name of the key in metric identity. Missing metric identity keys are ' 'assumed to match any value'))
One instance of filter specification is interpreted as AND of all specified keys (aka per-key constraints). Multiple filter specifications coming from multiple probes are considered as OR at the filter level.
The schema presented here is only for communicating the requirements and engineering is free to choose any way that accomplishes stated use cases.
Collector Processors additional_properties specified in collector
processors' configuration can be accessed using the special
context.
namespace. For example, if a collector defines
property system_role
, it could be used this
way:
duration: 60 * (15 if context.system_role == "leaf" else 10)
Items context is available as long as the items set is unchanged from the original set derived from the collector processor configuration. After data goes through a processor that changes this set, for example any grouping processor, it's no longer available.
From the blueprint, navigate to Analytics >
Probes to go to the probes table view. To go to a probe's
details, click its name. You can instantiate, create, clone, edit, delete,
import, and export probes.
You can display stages in some probes in various ways. For example, when you click the probe named Device Traffic, you'll see the image below. Changing the data source for Average Interface Counters from Real Time to Time Series gives you the option to view the time series as separate graphs, combined graphs: linear or combined graphs: stacked (as of Apstra version 4.0). Also, you can see the disk space used on each probe, as applicable.
If the Apstra controller has insufficient disk space, older telemetry data files are deleted. To retain older telemetry data, you can increase capacity with Apstra VM Clusters.

The structure and logic of non-linear probes with
tens of processors is not easily distinguished in the standard view. You can
click the expand button (top of left panel) to see an expanded representation of
how the processors are inter-related (new in version 4.0). For example, the
image below shows the expanded view of the MLAG Imbalance probe.