From 88673948cd8cb09ce40df3fcb4350d151ab778fc Mon Sep 17 00:00:00 2001 From: Pierre Christen <404111+netadvanced@users.noreply.github.com> Date: Thu, 30 Nov 2023 07:26:06 +0100 Subject: [PATCH] [net-mgmt/telegraf] Fixed #3633 + additional UI cleanup (#3652) --- .../OPNsense/Telegraf/forms/output.xml | 80 +++++++++++++++---- .../app/models/OPNsense/Telegraf/Input.xml | 2 +- .../app/models/OPNsense/Telegraf/Output.xml | 70 +++++++++++----- .../templates/OPNsense/Telegraf/telegraf.conf | 35 +++++--- 4 files changed, 143 insertions(+), 44 deletions(-) diff --git a/net-mgmt/telegraf/src/opnsense/mvc/app/controllers/OPNsense/Telegraf/forms/output.xml b/net-mgmt/telegraf/src/opnsense/mvc/app/controllers/OPNsense/Telegraf/forms/output.xml index 9b1793318..4f085287f 100644 --- a/net-mgmt/telegraf/src/opnsense/mvc/app/controllers/OPNsense/Telegraf/forms/output.xml +++ b/net-mgmt/telegraf/src/opnsense/mvc/app/controllers/OPNsense/Telegraf/forms/output.xml @@ -1,4 +1,8 @@
+ + + header + output.influx_enable @@ -41,6 +45,10 @@ checkbox This will skip chain and host verification. + + + header + output.influx_v2_enable @@ -83,6 +91,10 @@ text Flush timeout for the v2 Telegraf output in seconds, formatted as a string. If not provided, will default to 5. 0 means no timeout, but is not recommended. Increase if you get timeout errors. + + + header + output.graphite_enable @@ -125,6 +137,10 @@ checkbox This will enable support for tags. + + + header + output.graylog_enable @@ -137,6 +153,10 @@ text Set the IP and port where metrics shoud be sent to. + + + header + output.elastic_enable @@ -155,7 +175,7 @@ text Optional HTTP basic authentication details for Elasticsearch. - + output.elastic_password text @@ -173,6 +193,10 @@ text Set the index name. + + + header + output.prometheus_enable @@ -197,6 +221,10 @@ checkbox Send string metrics as Prometheus labels. + + + header + output.datadog_enable @@ -215,6 +243,10 @@ text Set the API Key for accessing Datadog. + + + header + output.mqtt_enable @@ -223,21 +255,41 @@ output.mqtt_topic_prefix - + text - Topic for producer messages. + MQTT Topic Prefix - Will be overidden by the Topic if defined below. + + + output.mqtt_topic + + text + MQTT Topic for produced messages. if left blank, will default to [ mqtt_topic_prefix/{{ .Hostname }}/{{ .PluginName }} ] output.mqtt_servers - text - URLs of mqtt brokers. Format is without square brackets, just like localhost:8083. + select_multiple + + true + URL of MQTT brokers. Format is without square brackets, just like localhost:8083 or mqtts://server.net:8883. The same credentials will be used when defining multiple brokers. + + + output.mqtt_insecure_skip_verify + + checkbox + Use TLS, but skip chain and host verification. output.mqtt_qos - text - QoS policy for messages. 0 = at most once, 1 = at least once, 2 = exactly once. Defaults to 2. + dropdown + QoS policy for messages. 0 = at most once, 1 = at least once, 2 = exactly once. Defaults to 2. + + + output.mqtt_retain + + checkbox + When selected, metrics will have the RETAIN flag set. output.mqtt_username @@ -261,18 +313,18 @@ output.mqtt_timeout text - Timeout for write operations. Default is 5s. + Timeout for write operations. Default is 5s. - output.mqtt_insecure_skip_verify - - checkbox - Use TLS, but skip chain and host verification. + output.mqtt_layout + + dropdown + Data layout to output. Defaults to "non-batch". - output.mqtt_format + output.mqtt_data_format - text + dropdown Data format to output. Defaults to "influx". diff --git a/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Input.xml b/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Input.xml index 95e8efdf8..51b8e4645 100644 --- a/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Input.xml +++ b/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Input.xml @@ -35,7 +35,7 @@ 1 N - + 0 N diff --git a/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Output.xml b/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Output.xml index baee0a02a..634145ed9 100644 --- a/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Output.xml +++ b/net-mgmt/telegraf/src/opnsense/mvc/app/models/OPNsense/Telegraf/Output.xml @@ -1,7 +1,7 @@ //OPNsense/telegraf/output Telegraf outputs configuration - 1.4.3 + 1.4.5 0 @@ -147,25 +147,42 @@ N /^([0-9a-zA-Z._\-]){1,128}$/u - Only characters, numbers, a dot, underscore and hyphen allowed. Do not use more than 128 characters. + Only characters, numbers, a dot, underscore and hyphen are allowed. Do not use more than 128 characters. - + N + /^([0-9a-zA-Z._\-\/{}]){1,200}$/u + Only characters, numbers, a dot, underscore, hyphen, slash and curly braces are allowed. Do not use more than 200 characters. + + + N + Y + , + + 0 + N + N /^([0-9a-zA-Z._\-]){1,128}$/u Only characters, numbers, a dot, underscore and hyphen allowed. Do not use more than 128 characters. - + + 2 + Y + + (0) At most once + (1) At least once + (2) Exactly once + + + N - 0 - 2 - Allowed values are 0-2 - + 5 N @@ -180,15 +197,32 @@ N - - 0 - N - - - - N - /^([0-9a-zA-Z._\-]){1,128}$/u - Only characters, numbers, a dot, underscore and hyphen allowed. Do not use more than 128 characters. - + + non-batch + Y + + (non-batch) send individual messages, one for each metric + (batch) send all metric as a single message per MQTT topic + (field) send individual messages for each field + + + + influx + Y + + Carbon2 + CloudEvents + CSV + Graphite + Influx + Json + MsgPack + NowMetric + Prometheus + PrometheusRemoteWrite + SplunkMetric + Wavefront + + diff --git a/net-mgmt/telegraf/src/opnsense/service/templates/OPNsense/Telegraf/telegraf.conf b/net-mgmt/telegraf/src/opnsense/service/templates/OPNsense/Telegraf/telegraf.conf index 355eb96a9..a0ac2ca8b 100644 --- a/net-mgmt/telegraf/src/opnsense/service/templates/OPNsense/Telegraf/telegraf.conf +++ b/net-mgmt/telegraf/src/opnsense/service/templates/OPNsense/Telegraf/telegraf.conf @@ -1,7 +1,6 @@ {% if helpers.exists('OPNsense.telegraf.general.enabled') and OPNsense.telegraf.general.enabled == '1' %} [global_tags] - {% if helpers.exists('OPNsense.telegraf.key.keys.key') %} {% for key_list in helpers.toList('OPNsense.telegraf.key.keys.key') %} {% if key_list.enabled == '1' %} @@ -94,13 +93,24 @@ {% if helpers.exists('OPNsense.telegraf.output.mqtt_enable') and OPNsense.telegraf.output.mqtt_enable == '1' %} [[outputs.mqtt]] {% if helpers.exists('OPNsense.telegraf.output.mqtt_servers') and OPNsense.telegraf.output.mqtt_servers != '' %} - servers = ["{{ OPNsense.telegraf.output.mqtt_servers }}"] + servers = [{{ '"' + ('","'.join(OPNsense.telegraf.output.mqtt_servers.split(","))) + '"' }}] {% endif %} -{% if helpers.exists('OPNsense.telegraf.output.mqtt_topic_prefix') and OPNsense.telegraf.output.mqtt_topic_prefix != '' %} - topic_prefix = "{{ OPNsense.telegraf.output.mqtt_topic_prefix }}" +{% if helpers.exists('OPNsense.telegraf.output.mqtt_topic') and OPNsense.telegraf.output.mqtt_topic != '' %} + topic = "{{ OPNsense.telegraf.output.mqtt_topic }}" +{% else %} +{% if helpers.exists('OPNsense.telegraf.output.mqtt_topic_prefix') and OPNsense.telegraf.output.mqtt_topic_prefix != '' %} + topic = "{{ OPNsense.telegraf.output.mqtt_topic_prefix + '/{{ .Hostname }}/{{ .PluginName }}' }}" +{% else %} + topic = "{{ 'telegraf/{{ .Hostname }}/{{ .PluginName }}' }}" +{% endif %} {% endif %} {% if helpers.exists('OPNsense.telegraf.output.mqtt_qos') and OPNsense.telegraf.output.mqtt_qos != '' %} - topic_prefix = "{{ OPNsense.telegraf.output.mqtt_qos }}" + qos = {{ OPNsense.telegraf.output.mqtt_qos }} +{% endif %} +{% if helpers.exists('OPNsense.telegraf.output.mqtt_retain') and OPNsense.telegraf.output.mqtt_retain == '1' %} + retain = true +{% else %} + retain = false {% endif %} {% if helpers.exists('OPNsense.telegraf.output.mqtt_client_id') and OPNsense.telegraf.output.mqtt_client_id != '' %} client_id = "{{ OPNsense.telegraf.output.mqtt_client_id }}" @@ -111,14 +121,17 @@ {% if helpers.exists('OPNsense.telegraf.output.mqtt_username') and OPNsense.telegraf.output.mqtt_username != '' %} username = "{{ OPNsense.telegraf.output.mqtt_username }}" {% endif %} -{% if helpers.exists('OPNsense.telegraf.output.mqtt_password') and OPNsense.telegraf.output.mqtt_password != '' %} +{% if helpers.exists('OPNsense.telegraf.output.mqtt_password') and OPNsense.telegraf.output.mqtt_password != '' %} password = "{{ OPNsense.telegraf.output.mqtt_password }}" {% endif %} -{% if helpers.exists('OPNsense.telegraf.output.mqtt_insecure_skip_verify') and OPNsense.telegraf.output.mqtt_insecure_skip_verify == '1' %} +{% if helpers.exists('OPNsense.telegraf.output.mqtt_insecure_skip_verify') and OPNsense.telegraf.output.mqtt_insecure_skip_verify == '1' %} insecure_skip_verify = true {% else %} insecure_skip_verify = false {% endif %} +{% if helpers.exists('OPNsense.telegraf.output.mqtt_layout') and OPNsense.telegraf.output.mqtt_layout != '' %} + layout = "{{ OPNsense.telegraf.output.mqtt_layout }}" +{% endif %} {% if helpers.exists('OPNsense.telegraf.output.mqtt_data_format') and OPNsense.telegraf.output.mqtt_data_format != '' %} data_format = "{{ OPNsense.telegraf.output.mqtt_data_format }}" {% endif %} @@ -333,10 +346,10 @@ {% if helpers.exists('OPNsense.telegraf.input.unbound') and OPNsense.telegraf.input.unbound == '1' %} [[inputs.unbound]] - binary = "/usr/local/sbin/unbound-control" - config_file = "/var/unbound/unbound.conf" - thread_as_tag = true - timeout = "5s" + binary = "/usr/local/sbin/unbound-control" + config_file = "/var/unbound/unbound.conf" + thread_as_tag = true + timeout = "5s" {% endif %} {% if helpers.exists('OPNsense.telegraf.input.apcupsd') and OPNsense.telegraf.input.apcupsd == '1' %}