more routeros grafana
This commit is contained in:
parent
4a4167e0b6
commit
75657d2423
11 changed files with 232 additions and 32 deletions
|
|
@ -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()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
54
data/grafana/rows/routeros_packets.py
Normal file
54
data/grafana/rows/routeros_packets.py
Normal 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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
68
data/grafana/rows/routeros_poe.py
Normal file
68
data/grafana/rows/routeros_poe.py
Normal 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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
46
data/grafana/rows/routeros_throughput.py
Normal file
46
data/grafana/rows/routeros_throughput.py
Normal 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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue