HomeGuidesAPI ReferenceGuidesMRT APIConfiguration API
GitHubAirheads Developer Community
Guides

SW Monitoring

🚧

Note

The Streaming API encoded message must be first decoded using CloudEvents proto file before decoding using the event specific proto file below

Switch Monitoring events provide real-time monitoring statistics for switches in your Central network.

Endpoint

Connect to the following WebSocket endpoint to receive monitoring events:

wss://<host>/network-monitoring/v1/switch-events

Ensure that you replace host value with your Central Base URL. Please check out our Getting Started guide for more information.

Proto File

Event messages published by Central are encoded using Google Protocol Buffers and sent over the WebSocket connection in serialized form.

To deserialize these messages, clients must use the following .proto file, which defines the schema used by Central when encoding the monitoring payloads.

syntax = "proto3";
package network_monitoring.switch.v1;

import "google/protobuf/timestamp.proto";

// EventOperation - Defines the switch device message operation (ADD/UPDATE/DELETE).
enum EventOperation {
  // Operation not set / unknown.
  EVENT_OPERATION_UNSPECIFIED = 0;
  // Resource was created or first seen.
  EVENT_OPERATION_ADD = 1;
  // Resource was removed.
  EVENT_OPERATION_DELETE = 2;
  // Existing resource changed state.
  EVENT_OPERATION_UPDATE = 3;
}

// Status - Defines the status of the device or interface (UP/DOWN).
enum Status {
  // Status not reported / unknown.
  STATUS_UNSPECIFIED = 0;
  // Operationally up.
  STATUS_UP = 1;
  // Operationally down.
  STATUS_DOWN = 2;
}

// StateDownReason - Reason for an interface being in a down state.
enum StateDownReason {
  // Reason not reported / unknown.
  STATE_DOWN_REASON_UNSPECIFIED = 0;
  // Administratively disabled.
  STATE_DOWN_REASON_ADMIN_DOWN = 1;
  // Physical link is down.
  STATE_DOWN_REASON_LINK_DOWN = 2;
  // Waiting for the link to come up.
  STATE_DOWN_REASON_WAITING_FOR_LINK = 3;
  // Port blocked (e.g. by spanning tree).
  STATE_DOWN_REASON_BLOCKED = 4;
  // Remote fault detected on the link.
  STATE_DOWN_REASON_REMOTE_FAULT = 5;
  // Interface hardware not present.
  STATE_DOWN_REASON_NOT_PRESENT = 6;
  // Hardware module is absent.
  STATE_DOWN_REASON_HARDWARE_ABSENT = 7;
  // Disabled by the system due to an error condition.
  STATE_DOWN_REASON_ERROR_DISABLED = 8;
  // Interface not yet initialized.
  STATE_DOWN_REASON_UNINITIALIZED = 9;
}

// VlanModes - VLAN mode assigned to a port.
enum VlanModes {
  // Mode not reported / unknown.
  VLAN_MODES_UNSPECIFIED = 0;
  // Access port carrying a single untagged VLAN.
  VLAN_MODES_ACCESS = 1;
  // Trunk with a tagged native VLAN.
  VLAN_MODES_NATIVE_TAGGED = 2;
  // Trunk with an untagged native VLAN.
  VLAN_MODES_NATIVE_UNTAGGED = 3;
  // Routed (Layer 3) port.
  VLAN_MODES_ROUTED = 4;
  // Trunk port carrying multiple tagged VLANs.
  VLAN_MODES_TRUNK = 5;
}

// VlanStatus - Operational status of a VLAN.
enum VlanStatus {
  // Status not reported / unknown.
  VLAN_STATUS_UNSPECIFIED = 0;
  // VLAN is operationally up.
  VLAN_STATUS_UP = 1;
  // VLAN is operationally down.
  VLAN_STATUS_DOWN = 2;
}

// VlanType - Classification of a VLAN.
enum VlanType {
  // Type not reported / unknown.
  VLAN_TYPE_UNSPECIFIED = 0;
  // Manually configured VLAN.
  VLAN_TYPE_STATIC = 1;
  // Dynamically learned VLAN.
  VLAN_TYPE_DYNAMIC = 2;
  // System/internal VLAN.
  VLAN_TYPE_INTERNAL = 3;
  // Default VLAN.
  VLAN_TYPE_DEFAULT = 4;
}

// DeviceRole - Role of a VSX device.
enum DeviceRole {
  // Role not reported / unknown.
  DEVICE_ROLE_UNSPECIFIED = 0;
  // Primary device in the VSX pair.
  DEVICE_ROLE_PRIMARY = 1;
  // Secondary device in the VSX pair.
  DEVICE_ROLE_SECONDARY = 2;
}

// ISLPDeviceState - Inter-Switch Link Protocol device state.
enum ISLPDeviceState {
  // State not reported / unknown.
  ISLP_DEVICE_STATE_UNSPECIFIED = 0;
  // Waiting to establish contact with the peer.
  ISLP_DEVICE_STATE_WAITING_FOR_PEER = 1;
  // Peer connection established.
  ISLP_DEVICE_STATE_PEER_ESTABLISHED = 2;
  // Split system; this device is acting as primary.
  ISLP_DEVICE_STATE_SPLIT_SYSTEM_PRIMARY = 3;
  // Split system; this device is acting as secondary.
  ISLP_DEVICE_STATE_SPLIT_SYSTEM_SECONDARY = 4;
  // Synchronized with peer as primary.
  ISLP_DEVICE_STATE_SYNC_PRIMARY = 5;
  // Synchronized with peer as secondary.
  ISLP_DEVICE_STATE_SYNC_SECONDARY = 6;
  // Secondary synchronized, applying link-up delay.
  ISLP_DEVICE_STATE_SYNC_SECONDARY_LINKUP_DELAY = 7;
}

// ISLState - Inter-Switch Link operational state.
enum ISLState {
  // State not reported / unknown.
  ISL_STATE_UNSPECIFIED = 0;
  // Link is in sync.
  ISL_STATE_IN_SYNC = 1;
  // Link is disabled.
  ISL_STATE_DISABLED = 2;
  // Software image version mismatch between peers.
  ISL_STATE_SW_IMAGE_VERSION_MISMATCH_ERROR = 3;
  // Conflicting or missing device roles.
  ISL_STATE_CONFLICTING_OR_MISSING_DEV_ROLES = 4;
  // Peer database connection error.
  ISL_STATE_PEER_DB_CONNECTION_ERROR = 5;
  // Configuration sync conflict.
  ISL_STATE_CONFIGURATION_SYNC_CONFLICT = 6;
  // Configuration sync is missing a required reference.
  ISL_STATE_CONFIGURATION_SYNC_MISSING_REFERENCE = 7;
  // Peer is reachable.
  ISL_STATE_PEER_REACHABLE = 8;
  // Peer is unreachable.
  ISL_STATE_PEER_UNREACHABLE = 9;
  // Link is operational.
  ISL_STATE_OPERATIONAL = 10;
  // Inter-switch link management is initializing.
  ISL_STATE_INTER_SWITCH_LINK_MGMT_INIT = 11;
  // Inter-switch link is down.
  ISL_STATE_INTER_SWITCH_LINK_DOWN = 12;
  // Internal error.
  ISL_STATE_INTERNAL_ERROR = 13;
}

// Switch Device State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch.state
message Switch {
  // PowerSupply - A power supply unit installed in the switch.
  message PowerSupply {
    // PowerSupplyStatus - Operational status of a power supply unit.
    enum PowerSupplyStatus {
      // Status not reported / unknown.
      POWER_SUPPLY_STATUS_UNSPECIFIED = 0;
      // No power supply is installed in this slot.
      POWER_SUPPLY_STATUS_NOT_PRESENT = 1;
      // Power supply is installed but not connected to a power source.
      POWER_SUPPLY_STATUS_NOT_PLUGGED = 2;
      // Power supply is connected and delivering power (healthy).
      POWER_SUPPLY_STATUS_POWERED = 3;
      // Power supply has failed (recoverable fault).
      POWER_SUPPLY_STATUS_FAILED = 4;
      // Power supply has permanently failed and will not recover.
      POWER_SUPPLY_STATUS_PERMANENT_FAILURE = 5;
      // Reserved sentinel from the source device enum; not a real status.
      POWER_SUPPLY_STATUS_MAX = 6;
      // No auxiliary power is available to the power supply.
      POWER_SUPPLY_STATUS_NO_AUX_POWER = 7;
      // Power supply is present but not delivering power.
      POWER_SUPPLY_STATUS_NOT_POWERED = 8;
      // Auxiliary power input is present but not powered.
      POWER_SUPPLY_STATUS_AUX_NOT_POWERED = 9;
    }
    // Power supply slot/unit number, e.g. 1.
    optional uint32 index = 1;
    // Operational status of the power supply.
    optional PowerSupplyStatus status = 2;
  }

  // Displays the switch device state events (ADD/UPDATE/DELETE).
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // The absolute time the device has been up, in milliseconds, e.g. 864000000.
  optional uint64 uptime_in_millis = 6;
  // Configured device name (hostname) of the switch, e.g. "access-sw-01".
  optional string device_name = 7;
  // Running firmware/software version, e.g. "PL.10.13.1000".
  optional string firmware_version = 8;
  // Base MAC address of this device (commander/member's own MAC), e.g. "00:4e:35:c4:b7:1a".
  optional string mac_address = 9;
  // Hardware model number of the switch, e.g. "JL258A".
  optional string model = 10;
  // Identifier of the stack this switch belongs to, e.g. "1". Empty for standalone switches.
  optional string stack_id = 11;
  // Operational status of the switch (UP/DOWN).
  optional Status status = 12;
  // Management IP address of the switch, e.g. "192.168.1.10".
  optional string ipv4 = 13;
  // Public (NAT) IP address of the switch as seen from the cloud, e.g. "203.0.113.10".
  optional string public_ip = 14;
  // Default gateway IP address of the switch in human-readable format (e.g. "192.168.1.1").
  optional string default_gateway = 15;
  // MAC address of the stack (the shared stack/VSF MAC), e.g. "00:4e:35:c4:b7:1a". The
  // `mac_address` field carries the commander/member device's own MAC.
  optional string stack_mac = 16;
  // Power supplies installed in the switch.
  repeated PowerSupply power_supplies = 17;
}

// Switch Interface State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-interface.state
message Interface {
  // Duplex - Duplex mode of an interface (half/full/auto).
  enum Duplex {
    // Duplex not reported / unknown.
    DUPLEX_UNSPECIFIED = 0;
    // Half duplex.
    DUPLEX_HALF = 1;
    // Full duplex.
    DUPLEX_FULL = 2;
    // Auto-negotiated duplex.
    DUPLEX_AUTO = 3;
  }

  // IntfType - Type/classification of an interface.
  enum IntfType {
    // Type not reported / unknown.
    INTF_TYPE_UNSPECIFIED = 0;
    // Physical Ethernet interface.
    INTF_TYPE_ETHERNET = 1;
    // Loopback interface.
    INTF_TYPE_LOOPBACK = 2;
    // VLAN (SVI) interface.
    INTF_TYPE_VLAN = 3;
    // Tunnel interface.
    INTF_TYPE_TUNNEL = 4;
    // Port-channel (link aggregation) interface.
    INTF_TYPE_PORT_CHANNEL = 5;
    // Standby interface.
    INTF_TYPE_STANDBY = 6;
    // Bridge interface.
    INTF_TYPE_BRIDGE = 7;
    // Split (breakout) interface.
    INTF_TYPE_SPLIT = 8;
    // Stacking interface.
    INTF_TYPE_STACK = 9;
    // Management interface.
    INTF_TYPE_MGMT = 10;
    // No specific interface type.
    INTF_TYPE_NONE = 11;
  }

  // SpeedType - Configured/negotiated port speed.
  enum SpeedType {
    // Speed not reported / unknown.
    SPEED_TYPE_UNSPECIFIED = 0;
    // Auto-negotiated speed.
    SPEED_TYPE_AUTO = 1;
    // 10 Mbps.
    SPEED_TYPE_10 = 2;
    // 100 Mbps.
    SPEED_TYPE_100 = 3;
    // 1 Gbps.
    SPEED_TYPE_1000 = 4;
    // 10 Gbps.
    SPEED_TYPE_10000 = 5;
    // 25 Gbps.
    SPEED_TYPE_25000 = 6;
    // 40 Gbps.
    SPEED_TYPE_40000 = 7;
    // 50 Gbps.
    SPEED_TYPE_50000 = 8;
    // 100 Gbps.
    SPEED_TYPE_100000 = 9;
    // 2.5 Gbps.
    SPEED_TYPE_2500 = 10;
    // 5 Gbps.
    SPEED_TYPE_5000 = 11;
  }

  // PortType - Physical connector type of a port.
  enum PortType {
    // Connector type not reported / unknown.
    PORT_TYPE_UNSPECIFIED = 0;
    // RJ45 copper connector.
    PORT_TYPE_RJ45 = 1;
    // GBIC/SFP transceiver slot.
    PORT_TYPE_GBIC = 2;
    // Serial connector.
    PORT_TYPE_SERIAL = 3;
    // USB connector.
    PORT_TYPE_USB = 4;
    // X2 transceiver connector.
    PORT_TYPE_X2 = 5;
  }

  // PoeSupport - Whether a port supports Power over Ethernet (PoE).
  enum PoeSupport {
    // PoE support not reported / unknown.
    POE_SUPPORT_UNSPECIFIED = 0;
    // Port supports PoE.
    POE_SUPPORT_SUPPORTED = 1;
    // Port does not support PoE.
    POE_SUPPORT_NOT_SUPPORTED = 2;
  }

  // Displays the interface state events (ADD/UPDATE/DELETE).
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // Interface name, e.g. "1/1/1".
  optional string name = 6;
  // Physical (MAC) address of the interface, e.g. "00:4e:35:c4:b7:1a".
  optional string mac_address = 7;
  // Combined operational status of the interface (UP/DOWN).
  optional Status status = 8;
  // IP address assigned to the interface, e.g. "10.0.0.1".
  optional string ipv4 = 9;
  // Duplex mode of the interface (HALF/FULL/AUTO).
  optional Duplex duplex = 10;
  // Port number (ifIndex) as a string, e.g. "1".
  optional string port_number = 11;
  // Interface type (ETHERNET, VLAN, PORT_CHANNEL, etc.).
  optional IntfType type = 12;
  // Configured interface mode, e.g. "access" or "trunk".
  optional string mode = 13;
  // Access/native VLAN id assigned to the interface, e.g. 1.
  optional uint32 vlan = 14;
  // Whether the port supports PoE (SUPPORTED/NOT_SUPPORTED).
  optional PoeSupport has_poe = 15;
  // PoE delivery state on the port (UP when power is being delivered).
  optional Status poe_status = 16;
  // Operational (link) status of the interface (UP/DOWN).
  optional Status oper_status = 17;
  // Administrative status of the interface (UP/DOWN).
  optional Status admin_status = 18;
  // Negotiated/configured port speed (e.g. SPEED_TYPE_1000 for 1 Gbps).
  optional SpeedType speed = 19;
  // Multiplexer/sub-port index for split ports, e.g. 0.
  optional uint32 mux = 20;
  // Whether the port is a trusted port (1 = trusted, 0 = untrusted).
  optional uint32 trusted = 21;
  // Physical slot the port resides on, e.g. "1".
  optional string slot = 22;
  // Physical connector type of the port (RJ45, GBIC, etc.).
  optional PortType phy_type = 23;
  // Vendor-specific port sub-type string, e.g. "SFP+".
  optional string sub_type = 24;
  // List of tagged/trunk VLAN ids allowed on the port, e.g. [10, 20, 30].
  repeated uint32 allowed_vlan = 25;
  // Native (untagged) VLAN id on a trunk port, e.g. 1.
  optional uint32 native_vlan = 26;
  // Whether VSX is enabled on this interface.
  optional bool vsx_enabled = 27;
  // Reason the interface is down (ADMIN_DOWN, LINK_DOWN, etc.).
  optional StateDownReason state_down_reason = 28;
  // VLAN mode of the port (ACCESS, TRUNK, ROUTED, etc.).
  optional VlanModes vlan_mode = 29;
}

// Switch LLDP State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-lldp.state
message Lldp {
  // Displays the LLDP state events (ADD/UPDATE/DELETE).
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // Local port where the LLDP neighbor is detected, e.g. "1/1/1".
  optional string port = 6;
  // Identifier of the remote (neighbor) device, e.g. "00:4e:35:c4:b7:1a".
  optional string neighbour = 7;
  // Remote port name advertised by the neighbor, e.g. "GigabitEthernet0/1".
  optional string neighbour_port = 8;
  // Remote port number advertised by the neighbor, e.g. "1".
  optional string remote_port_number = 9;
  // Identifier of the VLAN id associated with the neighbor, e.g. "10".
  optional string vlan_id = 10;
}

// Switch VLAN State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-vlan.state
message Vlan {
  // Displays the VLAN state events (ADD/UPDATE/DELETE).
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // VLAN name, e.g. "users".
  optional string name = 6;
  // Globally-unique VLAN identifier (serial:vlan), e.g. "SG12345678:10".
  optional string vlan_id = 7;
  // Numeric VLAN id (1-4094), e.g. 10.
  optional uint32 id = 8;
  // Comma-separated list of tagged member ports, e.g. "1/1/3,1/1/4".
  optional string tagged_ports = 9;
  // Comma-separated list of untagged member ports, e.g. "1/1/1,1/1/2".
  optional string untagged_ports = 10;
  // Primary VLAN id for a private-VLAN secondary, e.g. 100.
  optional uint32 primary_vlan_id = 11;
  // Private-VLAN type of the primary VLAN, e.g. "primary".
  optional string primary_vlan_type = 12;
  // Comma-separated list of promiscuous ports (private VLAN), e.g. "1/1/1".
  optional string promiscuous_ports = 13;
  // Comma-separated list of inter-switch-link (ISL) ports, e.g. "1/1/48".
  optional string isl_ports = 14;
  // Whether this VLAN is the management VLAN.
  optional bool is_management_vlan = 15;
  // Whether jumbo frames are enabled on the VLAN.
  optional bool is_jumbo_enabled = 16;
  // Whether IGMP snooping is enabled on the VLAN.
  optional bool is_igmp_enabled = 17;
  // Operational status of the VLAN (UP/DOWN).
  optional VlanStatus status = 18;
  // Human-readable reason for the VLAN's operational state, e.g. "no active member ports".
  optional string oper_state_reason = 19;
  // VLAN classification (STATIC, DYNAMIC, DEFAULT, etc.).
  optional VlanType type = 20;
  // Comma-separated list of access ports, e.g. "1/1/1,1/1/2".
  optional string access_ports = 21;
  // IP address assigned to the VLAN interface, e.g. "192.168.10.1".
  optional string ipv4 = 22;
}

// Switch VSX State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-vsx.state
message Vsx {
  // Displays the VSX state events (ADD/UPDATE/DELETE).
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // Role of this device in the VSX pair (PRIMARY/SECONDARY).
  optional DeviceRole role = 6;
  // Role of the peer device in the VSX pair (PRIMARY/SECONDARY).
  optional DeviceRole peer_role = 7;
  // Local inter-switch-link (ISL) port, e.g. "1/1/48".
  optional string isl_port = 8;
  // Peer's inter-switch-link (ISL) port, e.g. "1/1/48".
  optional string peer_isl_port = 9;
  // Keepalive IP address of the peer, e.g. "10.0.0.2".
  optional string keepalive_peer_ip = 10;
  // Local keepalive source IP address, e.g. "10.0.0.1".
  optional string keepalive_src_ip = 11;
  // Time of the last successful config sync (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp last_sync_timestamp = 12;
  // MAC address of the peer device, e.g. "00:4e:35:c4:b7:1b".
  optional string peer_mac = 13;
  // Whether configuration sync is disabled.
  optional bool config_sync_disable = 14;
  // ISLP (inter-switch link protocol) device state.
  optional ISLPDeviceState islp_device_state = 15;
  // Operational state of the inter-switch link.
  optional ISLState isl_state = 16;
  // State of the configuration-sync channel.
  optional ISLState config_sync_state_value = 17;
  // State of the ISL management channel.
  optional ISLState isl_mgmt_state_value = 18;
  // State of the NAE (Network Analytics Engine) channel.
  optional ISLState nae_state_value = 19;
  // State of the HTTPS server channel.
  optional ISLState https_server_state_value = 20;
}

// Switch Stack State
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-stack.state
message SwitchStack {
  // StackTopology - Physical topology of a switch stack.
  enum StackTopology {
    // Topology not reported / unknown.
    STACK_TOPOLOGY_UNSPECIFIED = 0;
    // Standalone switch (not stacked).
    STACK_TOPOLOGY_STANDALONE = 1;
    // Chain (daisy-chain) topology.
    STACK_TOPOLOGY_CHAIN = 2;
    // Ring topology.
    STACK_TOPOLOGY_RING = 3;
    // Full mesh topology.
    STACK_TOPOLOGY_MESH = 4;
    // Partial mesh topology.
    STACK_TOPOLOGY_PARTIAL_MESH = 5;
    // Topology could not be determined.
    STACK_TOPOLOGY_UNKNOWN = 6;
  }

  // StackRole - Role of a member device within a stack.
  enum StackRole {
    // Role not reported / unknown.
    STACK_ROLE_UNSPECIFIED = 0;
    // Member slot exists but no device is currently present.
    STACK_ROLE_MISSING = 1;
    // Device discovered but not yet joined to the stack.
    STACK_ROLE_NOT_JOINED = 2;
    // Active stack commander (manages the stack).
    STACK_ROLE_COMMANDER = 3;
    // Standby that takes over if the commander fails.
    STACK_ROLE_STANDBY = 4;
    // Regular stack member.
    STACK_ROLE_MEMBER = 5;
    // Member is shut down.
    STACK_ROLE_SHUTDOWN = 6;
    // Member is booting.
    STACK_ROLE_BOOTING = 7;
    // Member has failed.
    STACK_ROLE_FAILED = 8;
    // Device software is incompatible with the active stack.
    STACK_ROLE_INCOMPATIBLE_OS = 9;
    // Standby device is currently booting.
    STACK_ROLE_STANDBY_BOOTING = 10;
    // Role could not be determined.
    STACK_ROLE_UNKNOWN = 11;
  }
  // StackPolicy - Stack split-detection (fragment) policy.
  enum StackPolicy {
    // Policy not reported / unknown.
    STACK_POLICY_UNSPECIFIED = 0;
    // Policy could not be determined.
    STACK_POLICY_UNKNOWN = 1;
    // Keep only one fragment up after a split.
    STACK_POLICY_ONE_FRAGMENT_UP = 2;
    // Keep all fragments up after a split.
    STACK_POLICY_ALL_FRAGMENTS_UP = 3;
  }
  // Displays the stack state events (ADD/UPDATE/DELETE). Mandatory.
  optional EventOperation operation = 1;
  // Timestamp of the state event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 2;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 3;
  // Indicates the serial number of the stack member device, e.g. "SG12345678".
  optional string serial_number = 4;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 5;
  // Identifier of the stack, e.g. "1".
  optional string stack_id = 6;
  // Operational status of the stack member (UP/DOWN). Mandatory.
  optional Status status = 7;
  // Physical topology of the stack (CHAIN, RING, MESH, etc.).
  optional StackTopology topology = 8;
  // Stack split-detection policy (ONE_FRAGMENT_UP, ALL_FRAGMENTS_UP, etc.).
  optional StackPolicy policy = 9;
  // Firmware/software version running on the stack member, e.g. "PL.10.13.1000".
  optional string firmware_version = 10;
  // VSF domain identifier of the stack, e.g. 1.
  optional uint32 vsf_domain_id = 11;
  // Indicates the stack member identifier (e.g. "1", "2").
  optional uint32 stack_member_id = 12;
  // Indicates the role of this stack member.
  optional StackRole role = 13;
}

// Switch Device Stats
// Event type: com.hpe.greenlake.network-monitoring.v1.switch.stats
message DeviceStats {
  // Timestamp of the stats event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 1;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 2;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 3;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 4;
  // Overall CPU utilization percentage (0-100), e.g. 15.
  optional uint32 cpu_utilization = 5;
  // Total memory in bytes, e.g. 2147483648.
  optional uint64 mem_total = 6;
  // Free memory in bytes, e.g. 1073741824.
  optional uint64 mem_free = 7;
  // Memory utilization percentage (0-100), e.g. 50.
  optional uint64 mem_utilization = 8;
  // Instantaneous power consumption in watts, e.g. 120.
  optional uint32 power_consumption = 9;
  // Fan speed in RPM, e.g. 4200.
  optional uint32 fan_speed = 10;
  // Device temperature in degrees Celsius, e.g. 35.
  optional uint32 temperature = 11;
  // Aggregate fan status (UP when fans are healthy).
  optional Status fan_status = 12;
  // Maximum available power in watts, e.g. 680.
  optional uint32 max_power = 13;
  // PoE power currently consumed in watts, e.g. 90.
  optional uint32 poe_consumption = 14;
  // Total PoE power budget in watts, e.g. 370.
  optional uint32 poe_available = 15;
  // Indicates the device uptime in seconds, e.g. 864000.
  optional uint64 uptime = 16;
}

// Switch Interface Stats
// Event type: com.hpe.greenlake.network-monitoring.v1.switch-interface.stats
message InterfaceStats {
  // Timestamp of the stats event (RFC 3339 / ISO-8601), e.g. "2026-07-09T06:08:07Z".
  optional google.protobuf.Timestamp timestamp = 1;
  // Tenant identifier where the switch is managed, e.g. "f6e5349ef7ee11ef874fde9367ff63a0".
  optional string tenant_id = 2;
  // Unique identifier (serial number) of the switch device, e.g. "SG12345678".
  optional string serial_number = 3;
  // Site name where the switch is located, e.g. "HQ-Floor-1".
  optional string site_name = 4;
  // Physical (MAC) address of the interface, e.g. "00:4e:35:c4:b7:1a".
  optional string mac_address = 5;
  // Total bytes transmitted on the port, e.g. 10485760.
  optional uint64 tx_bytes = 6;
  // Total bytes received on the port, e.g. 20971520.
  optional uint64 rx_bytes = 7;
  // Count of inbound errors, e.g. 0.
  optional uint64 in_errors = 8;
  // Count of outbound errors, e.g. 0.
  optional uint64 out_errors = 9;
  // Count of inbound packets discarded, e.g. 0.
  optional uint64 in_discards = 10;
  // Count of outbound packets discarded, e.g. 0.
  optional uint64 out_discards = 11;
  // Total inbound packets, e.g. 15000.
  optional uint64 in_packets = 12;
  // Total outbound packets, e.g. 12000.
  optional uint64 out_packets = 13;
  // Count of other inbound errors, e.g. 0.
  optional uint32 in_other_err = 14;
  // Inbound multicast packets, e.g. 300.
  optional uint64 in_multicast_pkt = 15;
  // Inbound broadcast packets, e.g. 150.
  optional uint64 in_broadcast_pkt = 16;
  // Inbound unicast packets, e.g. 14550.
  optional uint64 in_unicast_pkt = 17;
  // Outbound multicast packets, e.g. 200.
  optional uint64 out_multicast_pkt = 18;
  // Outbound broadcast packets, e.g. 100.
  optional uint64 out_broadcast_pkt = 19;
  // Outbound unicast packets, e.g. 11700.
  optional uint64 out_unicast_pkt = 20;
  // Inbound frames with FCS (frame check sequence) errors, e.g. 0.
  optional uint64 in_fcs = 21;
  // Inbound frames with alignment errors, e.g. 0.
  optional uint64 in_alignment = 22;
  // Count of excessive-collision events on transmit, e.g. 0.
  optional uint32 out_excessive_collision = 23;
  // Inbound jabber frames, e.g. 0.
  optional uint64 in_jabbers = 24;
  // Inbound fragmented frames, e.g. 0.
  optional uint64 in_fragmented = 25;
  // Inbound giant frames (over max size), e.g. 0.
  optional uint32 in_giant = 26;
  // Inbound runt frames (under min size), e.g. 0.
  optional uint64 in_runt = 27;
  // Count of collisions on transmit, e.g. 0.
  optional uint64 out_collision = 28;
  // Count of late collisions on transmit, e.g. 0.
  optional uint32 out_late_collision = 29;
  // Count of deferred transmissions, e.g. 0.
  optional uint32 out_deferred = 30;
  // Port name (interface name, e.g. "1/1/1").
  optional string port_name = 31;
  // Port number (ifIndex), e.g. "1".
  optional string port_number = 32;
  // Port power consumption in watts, e.g. 15.
  optional uint32 power_consumption = 33;
}

// StreamSwitchMessage - Unified wrapper for all switch streaming events.
// Consumers unpack google.protobuf.Any as StreamSwitchMessage and switch on the oneof case.
message StreamSwitchMessage {
  oneof switch_event {
    Switch switch_state = 1; // event-type: com.hpe.greenlake.network-monitoring.v1.switch.state
    Interface interface_state = 2; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-interface.state
    Lldp lldp_state = 3; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-lldp.state
    Vlan vlan_state = 4; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-vlan.state
    Vsx vsx_state = 5; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-vsx.state
    DeviceStats device_stats = 6; // event-type: com.hpe.greenlake.network-monitoring.v1.switch.stats
    InterfaceStats interface_stats = 7; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-interface.stats
    SwitchStack stack_state = 8; // event-type: com.hpe.greenlake.network-monitoring.v1.switch-stack.state
  }
}

Supported Event Types

Switch Monitoring supports several event types. These values can be used when filtering events at subscription time.

State Event Types

TitleEvent Types
Switchcom.hpe.greenlake.network-monitoring.v1.switch.state
Interfacecom.hpe.greenlake.network-monitoring.v1.switch-interface.state
LLDPcom.hpe.greenlake.network-monitoring.v1.switch-lldp.state
VLANcom.hpe.greenlake.network-monitoring.v1.switch-vlan.state
VSXcom.hpe.greenlake.network-monitoring.v1.switch-vsx.state
SwitchStackcom.hpe.greenlake.network-monitoring.v1.switch-stack.state

Stats Event Types

TitleEvent Types
DeviceStatscom.hpe.greenlake.network-monitoring.v1.switch.stats
InterfaceStatscom.hpe.greenlake.network-monitoring.v1.switch-interface.stats

Did this page help you?