diff --git a/bundles/hardware/metadata.py b/bundles/hardware/metadata.py index 6000ca2..d4a9887 100644 --- a/bundles/hardware/metadata.py +++ b/bundles/hardware/metadata.py @@ -1,4 +1,9 @@ defaults = { + 'apt': { + 'packages': { + 'lm-sensors': {}, + }, + }, 'grafana_rows': { 'health', }, @@ -10,6 +15,9 @@ defaults = { 'telegraf': { 'config': { 'inputs': { + 'sensors': {repo.libs.hashable.hashable({ + 'timeout': '2s', + })}, 'exec': { repo.libs.hashable.hashable({ 'commands': ["sudo /usr/local/share/icinga/plugins/cpu_frequency"], diff --git a/bundles/telegraf/items.py b/bundles/telegraf/items.py index fadd146..05c8614 100644 --- a/bundles/telegraf/items.py +++ b/bundles/telegraf/items.py @@ -1,13 +1,27 @@ -from tomlkit import dumps +import tomlkit import json from bundlewrap.metadata import MetadataJSONEncoder +arch = node.metadata.get('vm/architecture', 'amd64') -files['/etc/telegraf/telegraf.conf'] = { - 'content': dumps(json.loads(json.dumps(node.metadata.get('telegraf/config'), cls=MetadataJSONEncoder)), sort_keys=True), - 'triggers': [ - 'svc_systemd:telegraf:restart', - ], +files = { + '/etc/telegraf/telegraf.conf': { + 'content': tomlkit.dumps( + json.loads(json.dumps( + node.metadata.get('telegraf/config'), + cls=MetadataJSONEncoder, + )), + sort_keys=True + ), + 'triggers': [ + 'svc_systemd:telegraf:restart', + ], + }, + '/usr/local/share/icinga/plugins/procio': { + 'content_type': 'download', + 'source': f'https://dl.sublimity.de/telegraf-procio/telegraf-procio-{arch}-latest', + 'mode': '0755', + }, } svc_systemd['telegraf'] = { diff --git a/bundles/telegraf/metadata.py b/bundles/telegraf/metadata.py index 2404c3b..d4f447a 100644 --- a/bundles/telegraf/metadata.py +++ b/bundles/telegraf/metadata.py @@ -55,6 +55,13 @@ defaults = { 'swap': {h({})}, 'system': {h({})}, 'net': {h({})}, + 'exec': {h({ + 'commands': [ + f'sudo /usr/local/share/icinga/plugins/procio', + ], + 'data_format': 'influx', + 'interval': '20s', + })}, }, }, }, @@ -66,6 +73,10 @@ defaults = { 'net_io', 'proc_cpu', 'proc_ram', + 'proc_io', + }, + 'sudoers': { + 'telegraf': {'/usr/local/share/icinga/plugins/procio'}, }, } diff --git a/data/grafana/rows/health.py b/data/grafana/rows/health.py index 67e7a5f..81953d5 100644 --- a/data/grafana/rows/health.py +++ b/data/grafana/rows/health.py @@ -1,4 +1,25 @@ { + 'frequency': { + 'stacked': True, + 'queries': { + 'cpu_frequency': { + 'filters': { + '_measurement': 'cpu_frequency', + '_field': [ + 'current', + ], + }, + 'function': 'mean', + }, + }, + 'legend': { + 'displayMode': 'hidden', + }, + 'tooltip': 'multi', + 'unit': 'MHz', + 'display_name': '__field.labels.cpu', + 'min': 0, + }, 'temperature': { 'stacked': False, 'queries': { @@ -18,14 +39,14 @@ 'tooltip': 'multi', 'unit': 'degrees', }, - 'frequency': { + 'sensors': { 'stacked': False, 'queries': { - 'cpu_frequency': { + 'sensors': { 'filters': { - '_measurement': 'cpu_frequency', + '_measurement': 'sensors', '_field': [ - 'current', + 'temp_input', ], }, 'function': 'mean', @@ -35,7 +56,7 @@ 'displayMode': 'hidden', }, 'tooltip': 'multi', - 'unit': 'MHz', - 'display_name': '__field.labels.cpu', + 'unit': 'degrees', + 'display_name': '__field.labels.chip', }, } diff --git a/data/grafana/rows/proc_io.py b/data/grafana/rows/proc_io.py new file mode 100644 index 0000000..5be5fc7 --- /dev/null +++ b/data/grafana/rows/proc_io.py @@ -0,0 +1,52 @@ +{ + 'io_read': { + 'stacked': True, + 'queries': { + 'io_read': { + 'filters': { + '_measurement': 'procio', + '_field': [ + 'read_bytes', + ], + }, + 'function': 'derivative', + 'minimum': 1, + }, + }, + 'unit': 'bytes', + 'display_name': '__field.labels.comm', + 'legend': { + 'displayMode': 'table', + 'placement': 'right', + 'calcs': [ + 'mean', + 'max', + ], + }, + }, + 'io_write': { + 'stacked': True, + 'queries': { + 'io_write': { + 'filters': { + '_measurement': 'procio', + '_field': [ + 'write_bytes', + ], + }, + 'function': 'derivative', + 'minimum': 1, + }, + }, + 'unit': 'bytes', + 'display_name': '__field.labels.comm', + 'legend': { + 'displayMode': 'table', + 'placement': 'right', + 'calcs': [ + 'mean', + 'max', + ], + }, + }, +} diff --git a/groups/machine/raspberry-pi.py b/groups/machine/raspberry-pi.py index 0b6dba7..a3b809e 100644 --- a/groups/machine/raspberry-pi.py +++ b/groups/machine/raspberry-pi.py @@ -5,4 +5,9 @@ 'bundles': { 'raspberry-pi', }, + 'metadata': { + 'system': { + 'architecture': 'arm64', + }, + }, }