more routeros grafana

This commit is contained in:
CroneKorkN 2025-12-13 16:29:20 +01:00
parent 4a4167e0b6
commit 75657d2423
Signed by: cronekorkn
SSH key fingerprint: SHA256:v0410ZKfuO1QHdgKBsdQNF64xmTxOF8osF1LIqwTcVw
11 changed files with 232 additions and 32 deletions

View file

@ -158,13 +158,14 @@ for dashboard_id, monitored_node in enumerate(monitored_nodes, start=1):
host=monitored_node.name, host=monitored_node.name,
negative=query_config.get('negative', False), negative=query_config.get('negative', False),
boolean_to_int=query_config.get('boolean_to_int', False), boolean_to_int=query_config.get('boolean_to_int', False),
minimum=query_config.get('minimum', None), over=query_config.get('over', None),
filters={ filters={
'host': monitored_node.name, 'host': monitored_node.name,
**query_config['filters'], **query_config['filters'],
}, },
exists=query_config.get('exists', []), exists=query_config.get('exists', []),
function=query_config.get('function', None), function=query_config.get('function', None),
multiply=query_config.get('multiply', None),
).strip() ).strip()
}) })

View file

@ -44,6 +44,19 @@ def routeros_monitoring_telegraf_inputs(metadata):
"name": "interface", "name": "interface",
"oid": "IF-MIB::ifTable", "oid": "IF-MIB::ifTable",
"field": [ "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) # Labels (optional but recommended)
{ {
"name": "ifName", "name": "ifName",
@ -75,6 +88,22 @@ def routeros_monitoring_telegraf_inputs(metadata):
"name": "out_ucast_pkts", "name": "out_ucast_pkts",
"oid": "IF-MIB::ifHCOutUcastPkts", "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 # Drops / Errors
{ {
@ -111,24 +140,24 @@ def routeros_monitoring_telegraf_inputs(metadata):
"is_tag": True, "is_tag": True,
}, },
{ {
"name": "poe_ifindex", "name": "ifindex",
"oid": "MIKROTIK-MIB::mtxrPOEInterfaceIndex", "oid": "MIKROTIK-MIB::mtxrPOEInterfaceIndex",
"is_tag": True, "is_tag": True,
}, },
{ {
"name": "poe_status", "name": "status",
"oid": "MIKROTIK-MIB::mtxrPOEStatus", "oid": "MIKROTIK-MIB::mtxrPOEStatus",
}, },
{ {
"name": "poe_voltage", "name": "voltage",
"oid": "MIKROTIK-MIB::mtxrPOEVoltage", "oid": "MIKROTIK-MIB::mtxrPOEVoltage",
}, },
{ {
"name": "poe_current", "name": "current",
"oid": "MIKROTIK-MIB::mtxrPOECurrent", "oid": "MIKROTIK-MIB::mtxrPOECurrent",
}, },
{ {
"name": "poe_power", "name": "power",
"oid": "MIKROTIK-MIB::mtxrPOEPower", "oid": "MIKROTIK-MIB::mtxrPOEPower",
}, },
], ],

View file

@ -8,8 +8,8 @@ from(bucket: "${bucket}")
|> filter(fn: (r) => exists r["${exist}"]) // WTF |> filter(fn: (r) => exists r["${exist}"]) // WTF
% endfor % endfor
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) // aggregate early for best performance |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) // aggregate early for best performance
% if minimum: % if over is not None:
|> filter(fn: (r) => r._value > ${minimum}) |> filter(fn: (r) => r._value > ${over})
% endif % endif
% if function == 'derivative': % if function == 'derivative':
|> derivative(nonNegative: true) |> derivative(nonNegative: true)
@ -19,5 +19,8 @@ from(bucket: "${bucket}")
% endif % endif
% if negative: % if negative:
|> map(fn: (r) => ({r with _value: r._value * - 1.0})) |> map(fn: (r) => ({r with _value: r._value * - 1.0}))
% endif
% if multiply is not None:
|> map(fn: (r) => ({r with _value: r._value * ${multiply}}))
% endif % endif
|> yield(name: "mean") |> yield(name: "mean")

View file

@ -9,7 +9,7 @@
'cpu_usage', 'cpu_usage',
], ],
}, },
'minimum': 0.2, 'over': 0.2,
}, },
}, },
'unit': 'percent', 'unit': 'percent',
@ -32,7 +32,7 @@
'memory_rss', 'memory_rss',
], ],
}, },
'minimum': 10*(10**6), 'over': 10*(10**6),
}, },
}, },
'unit': 'bytes', 'unit': 'bytes',

View file

@ -10,7 +10,7 @@
], ],
}, },
'function': 'derivative', 'function': 'derivative',
'minimum': 1024, 'over': 1024,
}, },
}, },
'unit': 'bytes', 'unit': 'bytes',
@ -34,7 +34,7 @@
], ],
}, },
'function': 'derivative', 'function': 'derivative',
'minimum': 1, 'over': 1,
}, },
}, },
'unit': 'bytes', 'unit': 'bytes',

View file

@ -1,15 +1,14 @@
{ {
'discards_in': { 'in': {
'stacked': False, 'stacked': True,
'queries': { 'queries': {
'discards_in': { 'in': {
'filters': { 'filters': {
'_measurement': 'interface', '_measurement': 'interface',
'_field': ['in_discards'], '_field': ['in_discards'],
'operating_system': 'routeros', 'operating_system': 'routeros',
}, },
'function': 'max', 'function': 'derivative',
'derivative': True,
}, },
}, },
'min': 0, 'min': 0,
@ -20,17 +19,16 @@
'displayMode': 'hidden', 'displayMode': 'hidden',
}, },
}, },
'discards_out': { 'out': {
'stacked': False, 'stacked': True,
'queries': { 'queries': {
'discards_out': { 'out': {
'filters': { 'filters': {
'_measurement': 'interface', '_measurement': 'interface',
'_field': ['out_discards'], '_field': ['out_discards'],
'operating_system': 'routeros', 'operating_system': 'routeros',
}, },
'function': 'max', 'function': 'derivative',
'derivative': True,
}, },
}, },
'min': 0, 'min': 0,

View file

@ -1,15 +1,14 @@
{ {
'errors_in': { 'in': {
'stacked': False, 'stacked': True,
'queries': { 'queries': {
'errors_in': { 'in': {
'filters': { 'filters': {
'_measurement': 'interface', '_measurement': 'interface',
'_field': ['in_errors'], '_field': ['in_errors'],
'operating_system': 'routeros', 'operating_system': 'routeros',
}, },
'function': 'max', 'function': 'derivative',
'derivative': True,
}, },
}, },
'min': 0, 'min': 0,
@ -20,17 +19,16 @@
'displayMode': 'hidden', 'displayMode': 'hidden',
}, },
}, },
'errors_out': { 'out': {
'stacked': False, 'stacked': True,
'queries': { 'queries': {
'errors_out': { 'out': {
'filters': { 'filters': {
'_measurement': 'interface', '_measurement': 'interface',
'_field': ['out_errors'], '_field': ['out_errors'],
'operating_system': 'routeros', 'operating_system': 'routeros',
}, },
'function': 'max', 'function': 'derivative',
'derivative': True,
}, },
}, },
'min': 0, 'min': 0,

View file

@ -0,0 +1,54 @@
{
'in': {
'stacked': True,
'queries': {
'in': {
'filters': {
'_measurement': 'interface',
'_field': [
'in_ucast_pkts',
'in_mcast_pkts',
'in_bcast_pkts',
],
'ifType': [6],
'operating_system': 'routeros',
},
'function': 'derivative',
'over': 0,
},
},
'min': 0,
'unit': 'pps',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
'out': {
'stacked': True,
'queries': {
'out': {
'filters': {
'_measurement': 'interface',
'_field': [
'in_ucast_pkts',
'in_mcast_pkts',
'in_bcast_pkts',
],
'ifType': [6],
'operating_system': 'routeros',
},
'function': 'derivative',
'over': 0,
},
},
'min': 0,
'unit': 'pps',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
}

View file

@ -0,0 +1,68 @@
{
'power': {
'stacked': True,
'queries': {
'power': {
'filters': {
'_measurement': 'poe',
'_field': ['power'],
'operating_system': 'routeros',
},
'function': 'mean',
'multiply': 0.1,
'over': 0,
},
},
'min': 0,
'unit': 'watt',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
'current': {
'stacked': True,
'queries': {
'voltage': {
'filters': {
'_measurement': 'poe',
'_field': ['current'],
'operating_system': 'routeros',
},
'function': 'mean',
'multiply': 0.1,
'over': 0,
},
},
'min': 0,
'unit': 'ampere',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
'voltage': {
'stacked': False,
'queries': {
'voltage': {
'filters': {
'_measurement': 'poe',
'_field': ['voltage'],
'operating_system': 'routeros',
},
'function': 'mean',
'multiply': 0.1,
'over': 0,
},
},
'min': 0,
'unit': 'volt',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
}

View file

@ -0,0 +1,46 @@
{
'in': {
'stacked': True,
'queries': {
'in': {
'filters': {
'_measurement': 'interface',
'_field': ['in_octets'],
'ifType': [6],
'operating_system': 'routeros',
},
'function': 'derivative',
'over': 0,
},
},
'min': 0,
'unit': 'bps',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
'out': {
'stacked': True,
'queries': {
'out': {
'filters': {
'_measurement': 'interface',
'_field': ['out_octets'],
'ifType': [6],
'operating_system': 'routeros',
},
'function': 'derivative',
'over': 0,
},
},
'min': 0,
'unit': 'bps',
'tooltip': 'multi',
'display_name': '${__field.labels.ifName} - ${__field.labels.ifAlias}',
'legend': {
'displayMode': 'hidden',
},
},
}

View file

@ -12,6 +12,9 @@
'grafana_rows': { 'grafana_rows': {
'routeros_discards', 'routeros_discards',
'routeros_errors', 'routeros_errors',
'routeros_throughput',
'routeros_poe',
'routeros_packets',
}, },
'routeros': { 'routeros': {
'gateway': '10.0.0.1', 'gateway': '10.0.0.1',