From 40f726ddf877ec5ef6f602964ac5d98ab403c8ec Mon Sep 17 00:00:00 2001 From: Steve Wolfe Date: Tue, 19 May 2026 00:08:31 -0400 Subject: [PATCH] sysutils/node_exporter: add textfile collector directory support Expose --collector.textfile.directory via a new optional UI field so users can drop .prom files into a local directory and have them scraped alongside the built-in collectors. Useful for custom metrics (SSH sessions, SMART data, gateway status, etc.) without patching the binary. Bumps model version 0.2.0 -> 0.3.0. --- .../app/controllers/OPNsense/NodeExporter/forms/general.xml | 6 ++++++ .../mvc/app/models/OPNsense/NodeExporter/General.xml | 3 ++- .../service/templates/OPNsense/NodeExporter/node_exporter | 6 +++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/sysutils/node_exporter/src/opnsense/mvc/app/controllers/OPNsense/NodeExporter/forms/general.xml b/sysutils/node_exporter/src/opnsense/mvc/app/controllers/OPNsense/NodeExporter/forms/general.xml index 8269302b1..cb5ab61d5 100644 --- a/sysutils/node_exporter/src/opnsense/mvc/app/controllers/OPNsense/NodeExporter/forms/general.xml +++ b/sysutils/node_exporter/src/opnsense/mvc/app/controllers/OPNsense/NodeExporter/forms/general.xml @@ -83,4 +83,10 @@ checkbox Enable the ZFS collector. + + general.textfile_directory + + text + Path to a directory read by the textfile collector. Files ending in .prom in this directory will be exposed as metrics. Leave empty to disable. Example: /var/db/node_exporter + diff --git a/sysutils/node_exporter/src/opnsense/mvc/app/models/OPNsense/NodeExporter/General.xml b/sysutils/node_exporter/src/opnsense/mvc/app/models/OPNsense/NodeExporter/General.xml index 07eb28595..144f669ab 100644 --- a/sysutils/node_exporter/src/opnsense/mvc/app/models/OPNsense/NodeExporter/General.xml +++ b/sysutils/node_exporter/src/opnsense/mvc/app/models/OPNsense/NodeExporter/General.xml @@ -1,7 +1,7 @@ //OPNsense/NodeExporter node_exporter configuration - 0.2.0 + 0.3.0 0 @@ -29,5 +29,6 @@ + diff --git a/sysutils/node_exporter/src/opnsense/service/templates/OPNsense/NodeExporter/node_exporter b/sysutils/node_exporter/src/opnsense/service/templates/OPNsense/NodeExporter/node_exporter index e7ea96fbc..e65ce07ce 100644 --- a/sysutils/node_exporter/src/opnsense/service/templates/OPNsense/NodeExporter/node_exporter +++ b/sysutils/node_exporter/src/opnsense/service/templates/OPNsense/NodeExporter/node_exporter @@ -46,13 +46,17 @@ {%- set zfs = no_collector + "zfs " -%} {%- endif -%} +{%- if not helpers.empty('OPNsense.NodeExporter.textfile_directory') -%} + {%- set textfile_directory = "--collector.textfile.directory=" + OPNsense.NodeExporter.textfile_directory + " " -%} +{%- endif -%} + {%- if ':' in OPNsense.NodeExporter.listenaddress -%} {%- set listenaddress = '[' + OPNsense.NodeExporter.listenaddress + ']' -%} {%- else -%} {%- set listenaddress = OPNsense.NodeExporter.listenaddress -%} {%- endif -%} -node_exporter_args="{{ cpu }}{{ exec }}{{ filesystem }}{{ loadavg }}{{ meminfo }}{{ netdev }}{{ ntp }}{{ time }}{{ devstat }}{{ zfs }}" +node_exporter_args="{{ cpu }}{{ exec }}{{ filesystem }}{{ loadavg }}{{ meminfo }}{{ netdev }}{{ ntp }}{{ time }}{{ devstat }}{{ zfs }}{{ textfile_directory }}" node_exporter_listen_address="{{ listenaddress }}:{{ OPNsense.NodeExporter.listenport }}" node_exporter_enable="YES"