bundles/routeros-monitoring/metadata.py: use monitoring from isac
This commit is contained in:
parent
49594610d3
commit
a8b295b551
1 changed files with 432 additions and 332 deletions
|
|
@ -1,343 +1,443 @@
|
|||
# h = repo.libs.hashable.hashable
|
||||
input_defaults = {
|
||||
"agents": [
|
||||
f"udp://{routeros_node.hostname}:161"
|
||||
for routeros_node in repo.nodes_in_group("routeros")
|
||||
],
|
||||
"agent_host_tag": "agent_host",
|
||||
"version": 2,
|
||||
"community": "public",
|
||||
"max_repetitions": 5, # supposedly less spiky loads
|
||||
"tags": {
|
||||
"operating_system": "routeros",
|
||||
},
|
||||
}
|
||||
|
||||
# defaults = {
|
||||
# 'apt': {
|
||||
# 'packages': {
|
||||
# 'snmp': {},
|
||||
# 'snmp-mibs-downloader': {},
|
||||
# },
|
||||
# },
|
||||
# }
|
||||
defaults = {
|
||||
'apt': {
|
||||
'packages': {
|
||||
'snmp': {},
|
||||
'snmp-mibs-downloader': {},
|
||||
},
|
||||
},
|
||||
"telegraf": {
|
||||
"processors": {
|
||||
"enum": {
|
||||
"mikrotik_host_mapping":{
|
||||
# - measurements get switch ip has agent_host tag
|
||||
# - wie define a value mapping ip -> node name
|
||||
# - agent_host gets translated and written into host tag
|
||||
"tagpass": {
|
||||
"operating_system": ["routeros"],
|
||||
},
|
||||
"mapping": [
|
||||
{
|
||||
"tag": "agent_host",
|
||||
"dest": "host",
|
||||
"default": "unknown",
|
||||
"value_mappings": {
|
||||
routeros_node.hostname: routeros_node.name
|
||||
for routeros_node in repo.nodes_in_group("routeros")
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
"inputs": {
|
||||
"snmp": {
|
||||
"mikrotik_switches_fast": {
|
||||
"interval": "2m",
|
||||
"collection_jitter": "20s",
|
||||
**input_defaults,
|
||||
"table": [
|
||||
# CPU load (HR-MIB)
|
||||
{
|
||||
"name": "mikrotik_cpu",
|
||||
"oid": "HOST-RESOURCES-MIB::hrProcessorTable",
|
||||
"field": [
|
||||
{
|
||||
"name": "frw_id",
|
||||
"oid": "HOST-RESOURCES-MIB::hrProcessorFrwID",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "load",
|
||||
"oid": "HOST-RESOURCES-MIB::hrProcessorLoad",
|
||||
},
|
||||
],
|
||||
},
|
||||
# Storage (HR-MIB)
|
||||
{
|
||||
"name": "mikrotik_storage",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageTable",
|
||||
"field": [
|
||||
{
|
||||
"name": "index",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageIndex",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "type",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageType",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "descr",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageDescr",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "alloc_unit",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageAllocationUnits",
|
||||
},
|
||||
{
|
||||
"name": "size",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageSize",
|
||||
},
|
||||
{
|
||||
"name": "used",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageUsed",
|
||||
},
|
||||
{
|
||||
"name": "alloc_failures",
|
||||
"oid": "HOST-RESOURCES-MIB::hrStorageAllocationFailures",
|
||||
},
|
||||
],
|
||||
},
|
||||
# MikroTik Health (table)
|
||||
{
|
||||
"name": "mikrotik_health",
|
||||
"oid": "MIKROTIK-MIB::mtxrGaugeTable",
|
||||
"field": [
|
||||
{
|
||||
"name": "sensor",
|
||||
"oid": "MIKROTIK-MIB::mtxrGaugeName",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"oid": "MIKROTIK-MIB::mtxrGaugeValue",
|
||||
},
|
||||
{
|
||||
"name": "unit",
|
||||
"oid": "MIKROTIK-MIB::mtxrGaugeUnit",
|
||||
"is_tag": True,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
"mikrotik_switches_slow": {
|
||||
"interval": "7m",
|
||||
"collection_jitter": "2m",
|
||||
**input_defaults,
|
||||
"table": [
|
||||
# Interface statistics (standard IF-MIB)
|
||||
{
|
||||
"name": "mikrotik_interface_generic",
|
||||
"oid": "IF-MIB::ifTable",
|
||||
"field": [
|
||||
# 6: ethernetCsmacd (physischer Ethernet-Port)
|
||||
# 24: softwareLoopback
|
||||
# 53: propVirtual (oft VLANs bei MikroTik)
|
||||
# 131: tunnel
|
||||
# 135: l2vlan
|
||||
# 161: ieee8023adLag (Bonding/LACP)
|
||||
# 209: bridge
|
||||
{
|
||||
"name": "ifType",
|
||||
"oid": "IF-MIB::ifType",
|
||||
"is_tag": True,
|
||||
},
|
||||
|
||||
# Labels (optional but recommended)
|
||||
{
|
||||
"name": "ifName",
|
||||
"oid": "IF-MIB::ifName",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "ifAlias",
|
||||
"oid": "IF-MIB::ifAlias",
|
||||
"is_tag": True,
|
||||
},
|
||||
|
||||
# Bytes (64-bit)
|
||||
{
|
||||
"name": "in_octets",
|
||||
"oid": "IF-MIB::ifHCInOctets",
|
||||
},
|
||||
{
|
||||
"name": "out_octets",
|
||||
"oid": "IF-MIB::ifHCOutOctets",
|
||||
},
|
||||
|
||||
# Packets (64-bit unicast)
|
||||
{
|
||||
"name": "in_ucast_pkts",
|
||||
"oid": "IF-MIB::ifHCInUcastPkts",
|
||||
},
|
||||
{
|
||||
"name": "out_ucast_pkts",
|
||||
"oid": "IF-MIB::ifHCOutUcastPkts",
|
||||
},
|
||||
{
|
||||
"name": "in_mcast_pkts",
|
||||
"oid": "IF-MIB::ifHCInMulticastPkts",
|
||||
},
|
||||
{
|
||||
"name": "in_bcast_pkts",
|
||||
"oid": "IF-MIB::ifHCInBroadcastPkts",
|
||||
},
|
||||
{
|
||||
"name": "out_mcast_pkts",
|
||||
"oid": "IF-MIB::ifHCOutMulticastPkts",
|
||||
},
|
||||
{
|
||||
"name": "out_bcast_pkts",
|
||||
"oid": "IF-MIB::ifHCOutBroadcastPkts",
|
||||
},
|
||||
|
||||
# Drops / Errors
|
||||
{
|
||||
"name": "in_discards",
|
||||
"oid": "IF-MIB::ifInDiscards",
|
||||
},
|
||||
{
|
||||
"name": "out_discards",
|
||||
"oid": "IF-MIB::ifOutDiscards",
|
||||
},
|
||||
{
|
||||
"name": "in_errors",
|
||||
"oid": "IF-MIB::ifInErrors",
|
||||
},
|
||||
{
|
||||
"name": "out_errors",
|
||||
"oid": "IF-MIB::ifOutErrors",
|
||||
},
|
||||
],
|
||||
},
|
||||
# Interface PoE
|
||||
{
|
||||
"name": "mikrotik_poe",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOETable",
|
||||
"field": [
|
||||
{
|
||||
"name": "ifName",
|
||||
"oid": "IF-MIB::ifName",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "ifAlias",
|
||||
"oid": "IF-MIB::ifAlias",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "ifindex",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOEInterfaceIndex",
|
||||
"is_tag": True,
|
||||
},
|
||||
{
|
||||
"name": "status",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOEStatus",
|
||||
},
|
||||
{
|
||||
"name": "voltage",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOEVoltage",
|
||||
},
|
||||
{
|
||||
"name": "current",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOECurrent",
|
||||
},
|
||||
{
|
||||
"name": "power",
|
||||
"oid": "MIKROTIK-MIB::mtxrPOEPower",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
"mikrotik_switches_very_slow": {
|
||||
"interval": "20m",
|
||||
"collection_jitter": "5m",
|
||||
**input_defaults,
|
||||
"table": [
|
||||
# Interface statistics (MikroTik-specific mib)
|
||||
{
|
||||
"name": "mikrotik_interface_detailed",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTable",
|
||||
"field": [
|
||||
# Join key / label (usually identical to IF-MIB ifName)
|
||||
{
|
||||
"name": "ifName",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsName",
|
||||
"is_tag": True,
|
||||
},
|
||||
|
||||
# join IF-MIB for better labels
|
||||
{
|
||||
"name": "ifAlias",
|
||||
"oid": "IF-MIB::ifAlias",
|
||||
"is_tag": True,
|
||||
},
|
||||
|
||||
# =========================
|
||||
# Physical layer (L1/L2)
|
||||
# =========================
|
||||
# CRC/FCS errors → very often cabling, connectors, SFPs, signal quality (EMI)
|
||||
{
|
||||
"name": "rx_fcs_errors",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxFCSError",
|
||||
},
|
||||
# Alignment errors → typically duplex mismatch or PHY problems
|
||||
{
|
||||
"name": "rx_align_errors",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxAlignError",
|
||||
},
|
||||
# Code errors → PHY encoding errors (signal/SFP/PHY)
|
||||
{
|
||||
"name": "rx_code_errors",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxCodeError",
|
||||
},
|
||||
# Carrier errors → carrier lost (copper issues, autoneg, PHY instability)
|
||||
{
|
||||
"name": "rx_carrier_errors",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxCarrierError",
|
||||
},
|
||||
# Jabber → extremely long invalid frames (faulty NIC/PHY, very severe)
|
||||
{
|
||||
"name": "rx_jabber",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxJabber",
|
||||
},
|
||||
|
||||
# ==================================
|
||||
# Length / framing anomalies (diagnostic)
|
||||
# ==================================
|
||||
# Frames shorter than minimum (noise, collisions, broken sender)
|
||||
{
|
||||
"name": "rx_too_short",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxTooShort",
|
||||
},
|
||||
# Frames longer than allowed (MTU mismatch, framing errors)
|
||||
{
|
||||
"name": "rx_too_long",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxTooLong",
|
||||
},
|
||||
# Fragments (often collision-related or duplex mismatch)
|
||||
{
|
||||
"name": "rx_fragment",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxFragment",
|
||||
},
|
||||
# Generic length errors
|
||||
{
|
||||
"name": "rx_length_errors",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxLengthError",
|
||||
},
|
||||
|
||||
# ==================
|
||||
# Drops (real packet loss)
|
||||
# ==================
|
||||
# RX drops (queue/ASIC/policy/overload) → highly alert-worthy
|
||||
{
|
||||
"name": "rx_drop",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxDrop",
|
||||
},
|
||||
# TX drops (buffer/queue exhaustion, scheduling, ASIC limits)
|
||||
{
|
||||
"name": "tx_drop",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxDrop",
|
||||
},
|
||||
|
||||
# =========================================
|
||||
# Duplex / collision indicators
|
||||
# (should be zero on full-duplex links)
|
||||
# =========================================
|
||||
# Total collisions (relevant only for half-duplex or misconfigurations)
|
||||
{
|
||||
"name": "tx_collisions",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxCollision",
|
||||
},
|
||||
# Late collisions → almost always duplex mismatch / bad autoneg
|
||||
{
|
||||
"name": "tx_late_collisions",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxLateCollision",
|
||||
},
|
||||
# Aggregate collision counter (context)
|
||||
{
|
||||
"name": "tx_total_collisions",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxTotalCollision",
|
||||
},
|
||||
# Excessive collisions → persistent duplex problems
|
||||
{
|
||||
"name": "tx_excessive_collisions",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxExcessiveCollision",
|
||||
},
|
||||
|
||||
# ==================
|
||||
# Flow control (diagnostic)
|
||||
# ==================
|
||||
# Pause frames received (peer throttling you)
|
||||
{
|
||||
"name": "rx_pause",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxPause",
|
||||
},
|
||||
# Pause frames sent (you throttling the peer)
|
||||
{
|
||||
"name": "tx_pause",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxPause",
|
||||
},
|
||||
# Pause frames actually honored
|
||||
{
|
||||
"name": "tx_pause_honored",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxPauseHonored",
|
||||
},
|
||||
|
||||
# ==========
|
||||
# Stability
|
||||
# ==========
|
||||
# Link-down events (loose cables, bad SFPs, PoE power drops, reboots)
|
||||
{
|
||||
"name": "link_downs",
|
||||
"oid": "MIKROTIK-MIB::mtxrInterfaceStatsLinkDowns",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# @metadata_reactor.provides(
|
||||
# 'telegraf/inputs/snmp',
|
||||
# 'telegraf/processors/enum',
|
||||
# )
|
||||
# def routeros_monitoring_telegraf_inputs(metadata):
|
||||
# def tag_important_ports(metadata):
|
||||
# # We want a graph, only for important ports. We deem ports important, if they have untagged vlans configured.
|
||||
# return {
|
||||
# "telegraf": {
|
||||
# "config": {
|
||||
# "processors": {
|
||||
# "enum": [
|
||||
# h({
|
||||
# "tagpass": {
|
||||
# "operating_system": ["routeros"],
|
||||
# "processors": {
|
||||
# "enum": {
|
||||
# f"mikrotik_port_mapping_{routeros_node.name}":{
|
||||
# "tagpass": {
|
||||
# "agent_host": [routeros_node.hostname],
|
||||
# },
|
||||
# "mapping": [
|
||||
# {
|
||||
# "tag": "ifName",
|
||||
# "dest": "is_infra",
|
||||
# "default": "false",
|
||||
# "value_mappings": {
|
||||
# port_name: "true"
|
||||
# for port_name, port_conf in repo.libs.mikrotik.get_netbox_config_for(routeros_node)['interfaces'].items()
|
||||
# if port_conf['mode'] == "tagged-all" or port_conf['tagged_vlans']
|
||||
# if port_conf['type'] != "lag"
|
||||
# },
|
||||
# },
|
||||
# "mapping": [
|
||||
# h({
|
||||
# "tag": "agent_host",
|
||||
# "dest": "host",
|
||||
# "default": "unknown",
|
||||
# "value_mappings": {
|
||||
# routeros_node.hostname: routeros_node.name
|
||||
# for routeros_node in repo.nodes_in_group("routeros")
|
||||
# },
|
||||
# })
|
||||
# ]
|
||||
# })
|
||||
# ]
|
||||
# },
|
||||
# "inputs": {
|
||||
# "snmp": {
|
||||
# h({
|
||||
# "agents": [
|
||||
# f"udp://{routeros_node.hostname}:161"
|
||||
# for routeros_node in repo.nodes_in_group("routeros")
|
||||
# ],
|
||||
# "version": 2,
|
||||
# "community": "public",
|
||||
# "interval": "30s",
|
||||
# "tags": {
|
||||
# "operating_system": "routeros",
|
||||
# },
|
||||
# "table": [
|
||||
# # MikroTik Health (table)
|
||||
# {
|
||||
# "name": "hw",
|
||||
# "oid": "MIKROTIK-MIB::mtxrGaugeTable",
|
||||
# "field": [
|
||||
# {
|
||||
# "name": "sensor",
|
||||
# "oid": "MIKROTIK-MIB::mtxrGaugeName",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# {
|
||||
# "name": "value",
|
||||
# "oid": "MIKROTIK-MIB::mtxrGaugeValue",
|
||||
# },
|
||||
# {
|
||||
# "name": "unit",
|
||||
# "oid": "MIKROTIK-MIB::mtxrGaugeUnit",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# ],
|
||||
# },
|
||||
# # Interface statistics (standard IF-MIB)
|
||||
# {
|
||||
# "name": "interface",
|
||||
# "oid": "IF-MIB::ifTable",
|
||||
# "field": [
|
||||
# # 6: ethernetCsmacd (physischer Ethernet-Port)
|
||||
# # 24: softwareLoopback
|
||||
# # 53: propVirtual (oft VLANs bei MikroTik)
|
||||
# # 131: tunnel
|
||||
# # 135: l2vlan
|
||||
# # 161: ieee8023adLag (Bonding/LACP)
|
||||
# # 209: bridge
|
||||
# {
|
||||
# "name": "ifType",
|
||||
# "oid": "IF-MIB::ifType",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
|
||||
# # Labels (optional but recommended)
|
||||
# {
|
||||
# "name": "ifName",
|
||||
# "oid": "IF-MIB::ifName",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# {
|
||||
# "name": "ifAlias",
|
||||
# "oid": "IF-MIB::ifAlias",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
|
||||
# # Bytes (64-bit)
|
||||
# {
|
||||
# "name": "in_octets",
|
||||
# "oid": "IF-MIB::ifHCInOctets",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_octets",
|
||||
# "oid": "IF-MIB::ifHCOutOctets",
|
||||
# },
|
||||
|
||||
# # Packets (64-bit unicast)
|
||||
# {
|
||||
# "name": "in_ucast_pkts",
|
||||
# "oid": "IF-MIB::ifHCInUcastPkts",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_ucast_pkts",
|
||||
# "oid": "IF-MIB::ifHCOutUcastPkts",
|
||||
# },
|
||||
# {
|
||||
# "name": "in_mcast_pkts",
|
||||
# "oid": "IF-MIB::ifHCInMulticastPkts",
|
||||
# },
|
||||
# {
|
||||
# "name": "in_bcast_pkts",
|
||||
# "oid": "IF-MIB::ifHCInBroadcastPkts",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_mcast_pkts",
|
||||
# "oid": "IF-MIB::ifHCOutMulticastPkts",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_bcast_pkts",
|
||||
# "oid": "IF-MIB::ifHCOutBroadcastPkts",
|
||||
# },
|
||||
|
||||
# # Drops / Errors
|
||||
# {
|
||||
# "name": "in_discards",
|
||||
# "oid": "IF-MIB::ifInDiscards",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_discards",
|
||||
# "oid": "IF-MIB::ifOutDiscards",
|
||||
# },
|
||||
# {
|
||||
# "name": "in_errors",
|
||||
# "oid": "IF-MIB::ifInErrors",
|
||||
# },
|
||||
# {
|
||||
# "name": "out_errors",
|
||||
# "oid": "IF-MIB::ifOutErrors",
|
||||
# },
|
||||
# ],
|
||||
# },
|
||||
# # Interface statistics (MikroTik-specific mib)
|
||||
# {
|
||||
# "name": "interface_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTable",
|
||||
# "field": [
|
||||
# # Join key / label (usually identical to IF-MIB ifName)
|
||||
# {
|
||||
# "name": "ifName",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsName",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
|
||||
# # join IF-MIB for better labels
|
||||
# {
|
||||
# "name": "ifAlias",
|
||||
# "oid": "IF-MIB::ifAlias",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
|
||||
# # =========================
|
||||
# # Physical layer (L1/L2)
|
||||
# # =========================
|
||||
# # CRC/FCS errors → very often cabling, connectors, SFPs, signal quality (EMI)
|
||||
# {
|
||||
# "name": "rx_fcs_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxFCSError",
|
||||
# },
|
||||
# # Alignment errors → typically duplex mismatch or PHY problems
|
||||
# {
|
||||
# "name": "rx_align_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxAlignError",
|
||||
# },
|
||||
# # Code errors → PHY encoding errors (signal/SFP/PHY)
|
||||
# {
|
||||
# "name": "rx_code_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxCodeError",
|
||||
# },
|
||||
# # Carrier errors → carrier lost (copper issues, autoneg, PHY instability)
|
||||
# {
|
||||
# "name": "rx_carrier_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxCarrierError",
|
||||
# },
|
||||
# # Jabber → extremely long invalid frames (faulty NIC/PHY, very severe)
|
||||
# {
|
||||
# "name": "rx_jabber",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxJabber",
|
||||
# },
|
||||
|
||||
# # ==================================
|
||||
# # Length / framing anomalies (diagnostic)
|
||||
# # ==================================
|
||||
# # Frames shorter than minimum (noise, collisions, broken sender)
|
||||
# {
|
||||
# "name": "rx_too_short",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxTooShort",
|
||||
# },
|
||||
# # Frames longer than allowed (MTU mismatch, framing errors)
|
||||
# {
|
||||
# "name": "rx_too_long",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxTooLong",
|
||||
# },
|
||||
# # Fragments (often collision-related or duplex mismatch)
|
||||
# {
|
||||
# "name": "rx_fragment",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxFragment",
|
||||
# },
|
||||
# # Generic length errors
|
||||
# {
|
||||
# "name": "rx_length_errors",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxLengthError",
|
||||
# },
|
||||
|
||||
# # ==================
|
||||
# # Drops (real packet loss)
|
||||
# # ==================
|
||||
# # RX drops (queue/ASIC/policy/overload) → highly alert-worthy
|
||||
# {
|
||||
# "name": "rx_drop",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxDrop",
|
||||
# },
|
||||
# # TX drops (buffer/queue exhaustion, scheduling, ASIC limits)
|
||||
# {
|
||||
# "name": "tx_drop",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxDrop",
|
||||
# },
|
||||
|
||||
# # =========================================
|
||||
# # Duplex / collision indicators
|
||||
# # (should be zero on full-duplex links)
|
||||
# # =========================================
|
||||
# # Total collisions (relevant only for half-duplex or misconfigurations)
|
||||
# {
|
||||
# "name": "tx_collisions",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxCollision",
|
||||
# },
|
||||
# # Late collisions → almost always duplex mismatch / bad autoneg
|
||||
# {
|
||||
# "name": "tx_late_collisions",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxLateCollision",
|
||||
# },
|
||||
# # Aggregate collision counter (context)
|
||||
# {
|
||||
# "name": "tx_total_collisions",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxTotalCollision",
|
||||
# },
|
||||
# # Excessive collisions → persistent duplex problems
|
||||
# {
|
||||
# "name": "tx_excessive_collisions",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxExcessiveCollision",
|
||||
# },
|
||||
|
||||
# # ==================
|
||||
# # Flow control (diagnostic)
|
||||
# # ==================
|
||||
# # Pause frames received (peer throttling you)
|
||||
# {
|
||||
# "name": "rx_pause",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsRxPause",
|
||||
# },
|
||||
# # Pause frames sent (you throttling the peer)
|
||||
# {
|
||||
# "name": "tx_pause",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxPause",
|
||||
# },
|
||||
# # Pause frames actually honored
|
||||
# {
|
||||
# "name": "tx_pause_honored",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsTxPauseHonored",
|
||||
# },
|
||||
|
||||
# # ==========
|
||||
# # Stability
|
||||
# # ==========
|
||||
# # Link-down events (loose cables, bad SFPs, PoE power drops, reboots)
|
||||
# {
|
||||
# "name": "link_downs",
|
||||
# "oid": "MIKROTIK-MIB::mtxrInterfaceStatsLinkDowns",
|
||||
# },
|
||||
# ],
|
||||
# },
|
||||
# # PoE
|
||||
# {
|
||||
# "name": "poe",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOETable",
|
||||
# "field": [
|
||||
# {
|
||||
# "name": "ifName",
|
||||
# "oid": "IF-MIB::ifName",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# {
|
||||
# "name": "ifAlias",
|
||||
# "oid": "IF-MIB::ifAlias",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# {
|
||||
# "name": "ifindex",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOEInterfaceIndex",
|
||||
# "is_tag": True,
|
||||
# },
|
||||
# {
|
||||
# "name": "status",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOEStatus",
|
||||
# },
|
||||
# {
|
||||
# "name": "voltage",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOEVoltage",
|
||||
# },
|
||||
# {
|
||||
# "name": "current",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOECurrent",
|
||||
# },
|
||||
# {
|
||||
# "name": "power",
|
||||
# "oid": "MIKROTIK-MIB::mtxrPOEPower",
|
||||
# },
|
||||
# ],
|
||||
# },
|
||||
# ],
|
||||
# })
|
||||
# },
|
||||
# ],
|
||||
# }
|
||||
# for routeros_node in repo.nodes_in_group("switches-mikrotik")
|
||||
# },
|
||||
# },
|
||||
# },
|
||||
|
|
|
|||
Loading…
Reference in a new issue