Monitoring
- POST /network/monitoring/alerts
Get cluster network alerts
Aggregate network alerts from a page of registered nodes — errors, MTU issues, link-down, NTP drift, offline nodes
- Request JSON Object:
after_id (integer) – keyset pagination: ID of last item on previous page
page (integer)
page_size (integer)
- Status Codes:
200 OK – Network alerts
500 Internal Server Error – Failed to generate network alerts
- Response JSON Object:
alerts[].category (string) – “errors”, “mtu”, “mtu_drift”, “link_down”, “node_offline”, “ntp”, “vxlan_fabric”
alerts[].device (string)
alerts[].message (string)
alerts[].node (string)
alerts[].severity (string) – “critical”, “warning”, “info”
count (integer) – total alerts generated (before truncation)
has_more (boolean)
next_id (integer) – next node cursor for pagination
page_size (integer)
summary.critical (integer)
summary.info (integer)
summary.warning (integer)
- POST /network/monitoring/dashboard
Get cluster node network dashboard
Aggregate network summaries from all registered nodes into a cluster-wide dashboard
- Request JSON Object:
after_id (integer) – keyset pagination: ID of last item on previous page
page (integer)
page_size (integer)
- Status Codes:
200 OK – Cluster node network dashboard
500 Internal Server Error – Failed to collect node network dashboard
- Response JSON Object:
count (integer) – total nodes in DB
has_more (boolean)
next_id (integer) – pass as after_id for next page; 0 = no more
nodes[].data.active_vlan_count (integer) – VLANs
nodes[].data.active_vlan_ids[] (integer)
nodes[].data.active_vxlan_count (integer) – VXLANs
nodes[].data.active_vxlan_vnis[] (integer)
nodes[].data.available_congestion_control[] (string)
nodes[].data.bridge_count (integer) – Bridges — main bridges with IPs assigned
nodes[].data.collected_at (integer) – unix ms
nodes[].data.congestion_control (string) – Congestion control
nodes[].data.default_gateway (string) – Default gateway for the node
nodes[].data.default_gateway_dev (string) – interface used for default route
nodes[].data.fqdn (string)
nodes[].data.highest_error_bridge (string)
nodes[].data.highest_error_bridge_errors (integer)
nodes[].data.highest_error_nic (string) – Error counters
nodes[].data.highest_error_nic_breakdown (any) – which error types make up the count
nodes[].data.highest_error_nic_errors (integer)
nodes[].data.highest_mtu (integer) – MTU — highest MTU across all bridges, VXLANs, and physical interfaces
nodes[].data.highest_mtu_owner (string) – device name (e.g. “cloudbr0”, “vxlan100”, “eno1”)
nodes[].data.highest_mtu_type (string) – “bridge”, “vxlan”, or “interface”
nodes[].data.hostname (string)
nodes[].data.kernel_net (any) – Kernel network config (sysctls + socket buffer tuning)
nodes[].data.links_up (integer) – number of physical NICs with oper_state=up
nodes[].data.main_bridges[].active_vxlans (integer) – VXLAN interfaces bound to this bridge
nodes[].data.main_bridges[].errors.details[].count (integer)
nodes[].data.main_bridges[].errors.details[].counter (string)
nodes[].data.main_bridges[].errors.details[].reason (string)
nodes[].data.main_bridges[].errors.total (integer)
nodes[].data.main_bridges[].ips[] (string)
nodes[].data.main_bridges[].member_count (integer) – bound ports/interfaces
nodes[].data.main_bridges[].members[] (string)
nodes[].data.main_bridges[].mtu (integer)
nodes[].data.main_bridges[].name (string)
nodes[].data.main_bridges[].offloads (object)
nodes[].data.main_bridges[].state (string) – “up” or “down”
nodes[].data.mtu_mismatches[].actual (integer) – actual MTU found
nodes[].data.mtu_mismatches[].description (string) – human-readable explanation
nodes[].data.mtu_mismatches[].expected (integer) – expected MTU
nodes[].data.mtu_mismatches[].interface (string) – the interface/bridge with the issue
nodes[].data.mtu_mismatches[].peer_device (string) – the other device in the mismatch
nodes[].data.mtu_mismatches[].type (string) – mismatch category
nodes[].data.nics[].errors.details[].count (integer)
nodes[].data.nics[].errors.details[].counter (string)
nodes[].data.nics[].errors.details[].reason (string)
nodes[].data.nics[].errors.total (integer)
nodes[].data.nics[].mtu (integer)
nodes[].data.nics[].name (string)
nodes[].data.nics[].offloads (object)
nodes[].data.nics[].speed (integer) – Mbps, -1 if unknown
nodes[].data.nics[].state (string) – “up” or “down”
nodes[].data.node_ip (string)
nodes[].data.node_role (string) – “management” or “kvm_host”
nodes[].data.ntp_offset_ms (number)
nodes[].data.ntp_source (string)
nodes[].data.ntp_synced (boolean) – NTP
nodes[].data.offloads (object) – Offloads — from the top talker BRIDGE (ethtool -k)
nodes[].data.physical_nic_count (integer) – L1 Physical Interfaces
nodes[].data.ring_buffers[].nic_name (string)
nodes[].data.ring_buffers[].rx_current (integer) – currently configured
nodes[].data.ring_buffers[].rx_max (integer) – hardware maximum
nodes[].data.ring_buffers[].tx_current (integer)
nodes[].data.ring_buffers[].tx_max (integer)
nodes[].data.sockets (any) – Open socket / connection summary from /proc/net/sockstat
nodes[].data.state_breakdown (object) – Interface state breakdown — count of NICs by operational state
nodes[].data.tcp_retrans_segs (integer) – TCP retransmit counter from /proc/net/snmp
nodes[].data.top_talker_bridge (string) – Top talker bridge (bridge with most traffic)
nodes[].data.top_talker_bridge_bytes (integer)
nodes[].data.top_talker_bytes (integer) – RxBytes + TxBytes
nodes[].data.top_talker_nic (string) – highest traffic physical NIC name
nodes[].data.top_talker_speed_mbps (integer) – from /sys/class/net/{dev}/speed
nodes[].data.total_bridge_errors (integer) – sum across all bridges
nodes[].data.total_nic_errors (integer) – sum across all physical NICs
nodes[].data.total_packet_drops (integer) – Aggregate packet stats across all physical NICs
nodes[].data.total_packet_errors (integer) – sum of rx_errors + tx_errors
nodes[].error (string)
nodes[].fqdn (string)
nodes[].node_ip (string)
nodes[].node_role (string)
nodes[].status (string) – “online”, “offline”, “unconfigured-noIP”, “unconfigured-noFQDN”
page_size (integer)
summary.kvm_nodes (integer)
summary.management_nodes (integer)
summary.mtu_drifts[].device_name (string) – e.g. “cloudbr0”
summary.mtu_drifts[].device_type (string) – “bridge” or “interface”
summary.mtu_drifts[].expected_mtu (integer) – from FabricConfig; 0 = peer-drift only
summary.mtu_drifts[].max_mtu (integer)
summary.mtu_drifts[].min_mtu (integer)
summary.mtu_drifts[].per_node[].fqdn (string)
summary.mtu_drifts[].per_node[].mtu (integer)
summary.network_health_pct (integer) – Top cards — health scores (percentage 0-100)
summary.nodes_with_mtu_issues (integer) – count of nodes that have at least one mismatch
summary.offline_nodes (integer)
summary.online_nodes (integer)
summary.total_bridges (integer) – Top cards — bridges & overlays
summary.total_errors (integer) – Top cards — errors
summary.total_links_down (integer) – TotalPhysicalNICs - TotalLinksUp
summary.total_links_up (integer) – sum of up links across cluster
summary.total_mtu_mismatches (integer) – sum of all per-node MTU mismatches across cluster
summary.total_nodes (integer)
summary.total_physical_nics (integer) – Top cards — physical links
summary.total_traffic_bytes (integer) – Top cards — traffic
summary.total_vlans (integer)
summary.total_vxlans (integer)
summary.unconfigured_nodes (integer)
summary.vxlan_fabric_healthy (integer) – KVM nodes with VXLANs active / online KVM nodes
- POST /network/monitoring/frr/dashboard
Get FRR dashboard
Retrieve an aggregated FRR dashboard with BGP router status from all registered nodes
- Request JSON Object:
after_id (integer) – keyset pagination: ID of last item on previous page
page (integer)
page_size (integer)
- Status Codes:
200 OK – FRR dashboard data
500 Internal Server Error – Failed to collect FRR dashboard
- Response JSON Object:
count (integer) – total routers in DB
has_more (boolean)
next_id (integer) – pass as after_id for next page; 0 = no more
nodes[].as (integer)
nodes[].bfd_peers[].diagnostic (string)
nodes[].bfd_peers[].downtime (integer)
nodes[].bfd_peers[].local (string)
nodes[].bfd_peers[].multihop (boolean)
nodes[].bfd_peers[].peer (string)
nodes[].bfd_peers[].status (string)
nodes[].bfd_peers[].uptime (integer)
nodes[].bgp (any)
nodes[].error (string)
nodes[].evpn_routes.imet (integer)
nodes[].evpn_routes.macip (integer)
nodes[].evpn_routes.prefix (integer)
nodes[].evpn_routes.total_routes (integer)
nodes[].fqdn (string)
nodes[].frr (any)
nodes[].ip_address (string)
nodes[].name (string)
nodes[].ospf (any)
nodes[].ospf_neighbors[].neighbor_id (string)
nodes[].ospf_neighbors[].state (string)
nodes[].sdn_last_error (string)
nodes[].sdn_status (string) – Drift-detection state from bmc_infos.sdn_status (separate from Status above: a node can be Status=online (FRR daemon up + responsive) yet SDNStatus=failed (BGP not Established or vtep0 missing). UI’s EVPN Health column renders this field — chore_drift_detection D5/D6/D7.
nodes[].status (string) – online/offline — FRR daemon health
nodes[].vnis[].arp_table[].age_mins (number)
nodes[].vnis[].arp_table[].ip (string)
nodes[].vnis[].arp_table[].mac (string)
nodes[].vnis[].arp_table[].remote_vtep (string)
nodes[].vnis[].arp_table[].state (string)
nodes[].vnis[].arp_table[].type (string) – “local” or “remote”
nodes[].vnis[].bridge (string)
nodes[].vnis[].export_rts[] (string)
nodes[].vnis[].import_rts[] (string)
nodes[].vnis[].l2_vnis[] (integer)
nodes[].vnis[].local_vtep (string)
nodes[].vnis[].mac_table[].age_mins (number)
nodes[].vnis[].mac_table[].mac (string)
nodes[].vnis[].mac_table[].remote_vtep (string)
nodes[].vnis[].mac_table[].source_port (string) – local interface
nodes[].vnis[].mac_table[].type (string) – “local” or “remote”
nodes[].vnis[].num_arp_entries (integer)
nodes[].vnis[].num_macs (integer)
nodes[].vnis[].num_remote_vteps (integer)
nodes[].vnis[].rd (string)
nodes[].vnis[].remote_vtep_info[].connection_source (string)
nodes[].vnis[].remote_vtep_info[].neighbors[] (string)
nodes[].vnis[].remote_vtep_info[].state (string)
nodes[].vnis[].remote_vtep_info[].vtep_ip (string)
nodes[].vnis[].remote_vteps[] (string)
nodes[].vnis[].router_mac (string)
nodes[].vnis[].state (string)
nodes[].vnis[].svi_if (string)
nodes[].vnis[].tenant_vrf (string)
nodes[].vnis[].type (string)
nodes[].vnis[].vlan (integer) – Extended VNI fields (from VtyshEVPNVNI)
nodes[].vnis[].vni (integer)
nodes[].vnis[].vrf (string)
nodes[].vnis[].vxlan_if (string)
nodes[].vnis[].vxlan_tunnel.admin_state (string)
nodes[].vnis[].vxlan_tunnel.interface_name (string)
nodes[].vnis[].vxlan_tunnel.mac_address (string)
nodes[].vnis[].vxlan_tunnel.mtu (integer)
nodes[].vnis[].vxlan_tunnel.status (string)
page_size (integer)
summary.bfd_peers_down (integer)
summary.bfd_peers_up (integer)
summary.established_peers (integer)
summary.full_ospf_adjacencies (integer)
summary.l2_vnis (integer)
summary.l3_vnis (integer)
summary.offline_nodes (integer)
summary.online_nodes (integer)
summary.total_arp_entries (integer)
summary.total_bfd_peers (integer) – BFD counters
summary.total_macs (integer)
summary.total_msg_rcvd (integer) – BGP message statistics (cluster-wide aggregates)
summary.total_msg_sent (integer)
summary.total_nodes (integer)
summary.total_ospf_neighbors (integer)
summary.total_peers (integer)
summary.total_routes (integer)
summary.total_session_flaps (integer)
summary.total_vnis (integer)
- GET /network/monitoring/node-summary
Get local node network summary
Collect network summary (NICs, bridges, VLANs, VXLANs, offloads, NTP) from the local node
- Status Codes:
200 OK – Node network summary
500 Internal Server Error – Failed to collect node network summary
- Response JSON Object:
active_vlan_count (integer) – VLANs
active_vlan_ids[] (integer)
active_vxlan_count (integer) – VXLANs
active_vxlan_vnis[] (integer)
available_congestion_control[] (string)
bridge_count (integer) – Bridges — main bridges with IPs assigned
collected_at (integer) – unix ms
congestion_control (string) – Congestion control
default_gateway (string) – Default gateway for the node
default_gateway_dev (string) – interface used for default route
fqdn (string)
highest_error_bridge (string)
highest_error_bridge_errors (integer)
highest_error_nic (string) – Error counters
highest_error_nic_breakdown (any) – which error types make up the count
highest_error_nic_errors (integer)
highest_mtu (integer) – MTU — highest MTU across all bridges, VXLANs, and physical interfaces
highest_mtu_owner (string) – device name (e.g. “cloudbr0”, “vxlan100”, “eno1”)
highest_mtu_type (string) – “bridge”, “vxlan”, or “interface”
hostname (string)
kernel_net (any) – Kernel network config (sysctls + socket buffer tuning)
links_up (integer) – number of physical NICs with oper_state=up
main_bridges[].active_vxlans (integer) – VXLAN interfaces bound to this bridge
main_bridges[].errors.details[].count (integer)
main_bridges[].errors.details[].counter (string)
main_bridges[].errors.details[].reason (string)
main_bridges[].errors.total (integer)
main_bridges[].ips[] (string)
main_bridges[].member_count (integer) – bound ports/interfaces
main_bridges[].members[] (string)
main_bridges[].mtu (integer)
main_bridges[].name (string)
main_bridges[].offloads (object)
main_bridges[].state (string) – “up” or “down”
mtu_mismatches[].actual (integer) – actual MTU found
mtu_mismatches[].description (string) – human-readable explanation
mtu_mismatches[].expected (integer) – expected MTU
mtu_mismatches[].interface (string) – the interface/bridge with the issue
mtu_mismatches[].peer_device (string) – the other device in the mismatch
mtu_mismatches[].type (string) – mismatch category
nics[].errors.details[].count (integer)
nics[].errors.details[].counter (string)
nics[].errors.details[].reason (string)
nics[].errors.total (integer)
nics[].mtu (integer)
nics[].name (string)
nics[].offloads (object)
nics[].speed (integer) – Mbps, -1 if unknown
nics[].state (string) – “up” or “down”
node_ip (string)
node_role (string) – “management” or “kvm_host”
ntp_offset_ms (number)
ntp_source (string)
ntp_synced (boolean) – NTP
offloads (object) – Offloads — from the top talker BRIDGE (ethtool -k)
physical_nic_count (integer) – L1 Physical Interfaces
ring_buffers[].nic_name (string)
ring_buffers[].rx_current (integer) – currently configured
ring_buffers[].rx_max (integer) – hardware maximum
ring_buffers[].tx_current (integer)
ring_buffers[].tx_max (integer)
sockets (any) – Open socket / connection summary from /proc/net/sockstat
state_breakdown (object) – Interface state breakdown — count of NICs by operational state
tcp_retrans_segs (integer) – TCP retransmit counter from /proc/net/snmp
top_talker_bridge (string) – Top talker bridge (bridge with most traffic)
top_talker_bridge_bytes (integer)
top_talker_bytes (integer) – RxBytes + TxBytes
top_talker_nic (string) – highest traffic physical NIC name
top_talker_speed_mbps (integer) – from /sys/class/net/{dev}/speed
total_bridge_errors (integer) – sum across all bridges
total_nic_errors (integer) – sum across all physical NICs
total_packet_drops (integer) – Aggregate packet stats across all physical NICs
total_packet_errors (integer) – sum of rx_errors + tx_errors
- GET /network/monitoring/vxlan
List VXLAN interfaces
Retrieve all VXLAN interfaces on the local hypervisor
- Status Codes:
200 OK – List of VXLAN interfaces
500 Internal Server Error – Failed to list VXLANs
- Response JSON Object:
count (integer)
vxlans[].admin_state (string) – “up”, “down” - administratively configured
vxlans[].allmulticast (boolean) – true if allmulticast enabled
vxlans[].bridge_name (string) – Bridge this VXLAN belongs to
vxlans[].group (string) – Multicast group (if used)
vxlans[].learning (boolean) – Should be false for EVPN
vxlans[].link (string) – Underlying interface
vxlans[].local_ip (string)
vxlans[].mtu (integer)
vxlans[].name (string)
vxlans[].oper_state (string) – “up”, “down”, “unknown” - actual link state
vxlans[].port (integer) – VXLAN UDP port (default 4789)
vxlans[].promiscuous (boolean) – true if in promiscuous mode
vxlans[].stats (any) – Detailed link statistics
vxlans[].tx_queue_len (integer)
vxlans[].vni (integer)
- GET /network/monitoring/vxlan/{name}
Validate a VXLAN interface
Validate that a VXLAN interface exists and has correct parameters (nolearning, MTU, VTEP IP). Accepts interface name (e.g. “vxlan100”) or plain VNI number.
- Parameters:
name (string) – VXLAN interface name (e.g. vxlan100) or VNI number
- Status Codes:
200 OK – VXLAN validation result
400 Bad Request – Invalid VXLAN name
500 Internal Server Error – Failed to validate VXLAN
- GET /network/monitoring/vxlan/{name}/status
Get VXLAN status by name
Retrieve detailed status and link statistics for a specific VXLAN interface
- Parameters:
name (string) – VXLAN interface name (e.g. vxlan100) or VNI number
- Status Codes:
200 OK – VXLAN status with stats
400 Bad Request – Invalid VXLAN name
404 Not Found – VXLAN not found
- Response JSON Object:
admin_state (string) – “up”, “down” - administratively configured
allmulticast (boolean) – true if allmulticast enabled
bridge_name (string) – Bridge this VXLAN belongs to
group (string) – Multicast group (if used)
learning (boolean) – Should be false for EVPN
link (string) – Underlying interface
local_ip (string)
mtu (integer)
name (string)
oper_state (string) – “up”, “down”, “unknown” - actual link state
port (integer) – VXLAN UDP port (default 4789)
promiscuous (boolean) – true if in promiscuous mode
stats (any) – Detailed link statistics
tx_queue_len (integer)
vni (integer)