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,
negative=query_config.get('negative', False),
boolean_to_int=query_config.get('boolean_to_int', False),
minimum=query_config.get('minimum', None),
over=query_config.get('over', None),
filters={
'host': monitored_node.name,
**query_config['filters'],
},
exists=query_config.get('exists', []),
function=query_config.get('function', None),
multiply=query_config.get('multiply', None),
).strip()
})

View file

@ -44,6 +44,19 @@ def routeros_monitoring_telegraf_inputs(metadata):
"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",
@ -75,6 +88,22 @@ def routeros_monitoring_telegraf_inputs(metadata):
"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
{
@ -111,24 +140,24 @@ def routeros_monitoring_telegraf_inputs(metadata):
"is_tag": True,
},
{
"name": "poe_ifindex",
"name": "ifindex",
"oid": "MIKROTIK-MIB::mtxrPOEInterfaceIndex",
"is_tag": True,
},
{
"name": "poe_status",
"name": "status",
"oid": "MIKROTIK-MIB::mtxrPOEStatus",
},
{
"name": "poe_voltage",
"name": "voltage",
"oid": "MIKROTIK-MIB::mtxrPOEVoltage",
},
{
"name": "poe_current",
"name": "current",
"oid": "MIKROTIK-MIB::mtxrPOECurrent",
},
{
"name": "poe_power",
"name": "power",
"oid": "MIKROTIK-MIB::mtxrPOEPower",
},
],

View file

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

View file

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

View file

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

View file

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

View file

@ -1,15 +1,14 @@
{
'errors_in': {
'stacked': False,
'in': {
'stacked': True,
'queries': {
'errors_in': {
'in': {
'filters': {
'_measurement': 'interface',
'_field': ['in_errors'],
'operating_system': 'routeros',
},
'function': 'max',
'derivative': True,
'function': 'derivative',
},
},
'min': 0,
@ -20,17 +19,16 @@
'displayMode': 'hidden',
},
},
'errors_out': {
'stacked': False,
'out': {
'stacked': True,
'queries': {
'errors_out': {
'out': {
'filters': {
'_measurement': 'interface',
'_field': ['out_errors'],
'operating_system': 'routeros',
},
'function': 'max',
'derivative': True,
'function': 'derivative',
},
},
'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': {
'routeros_discards',
'routeros_errors',
'routeros_throughput',
'routeros_poe',
'routeros_packets',
},
'routeros': {
'gateway': '10.0.0.1',