summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2023-04-12 08:39:24 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2023-04-12 08:39:24 +0000
commit692f103fe535cd8f3ed20206a3c17cddd151e046 (patch)
treea02f53412f7ab326867c637a39c9f4044ad2a6c2
parent0b0f991a86461ed725762010cf263fb2f0eaa16a (diff)
downloadvyos-1x-692f103fe535cd8f3ed20206a3c17cddd151e046.tar.gz
vyos-1x-692f103fe535cd8f3ed20206a3c17cddd151e046.zip
T5152: Get default hostname for telegraf from FQDN or hostname
Fix for Telegraf agent hostname isn't qualified Try to get the hostname from FQDN and then from the hostname Used for metrics You may have more than one machine with different domain names r1 domain-name foo.local, hostname myhost r2 domain-name bar.local, hostname myhost It helps to detect from which exactly host we get metrics for InfluxDB2
-rw-r--r--data/templates/monitoring/telegraf.tmpl2
-rwxr-xr-xsrc/conf_mode/service_monitoring_telegraf.py12
2 files changed, 12 insertions, 2 deletions
diff --git a/data/templates/monitoring/telegraf.tmpl b/data/templates/monitoring/telegraf.tmpl
index c5cbddc8c..5b9838f7b 100644
--- a/data/templates/monitoring/telegraf.tmpl
+++ b/data/templates/monitoring/telegraf.tmpl
@@ -12,7 +12,7 @@
debug = false
quiet = false
logfile = ""
- hostname = ""
+ hostname = "{{ hostname }}"
omit_hostname = false
{% if influxdb_configured is defined %}
[[outputs.influxdb_v2]]
diff --git a/src/conf_mode/service_monitoring_telegraf.py b/src/conf_mode/service_monitoring_telegraf.py
index a71565df4..e816bbe8a 100755
--- a/src/conf_mode/service_monitoring_telegraf.py
+++ b/src/conf_mode/service_monitoring_telegraf.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2021-2022 VyOS maintainers and contributors
+# Copyright (C) 2021-2023 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
+import socket
import json
from sys import exit
@@ -77,6 +78,14 @@ def get_nft_filter_chains():
return chain_list
+def get_hostname() -> str:
+ try:
+ hostname = socket.getfqdn()
+ except socket.gaierror:
+ hostname = socket.gethostname()
+ return hostname
+
+
def get_config(config=None):
if config:
@@ -96,6 +105,7 @@ def get_config(config=None):
monitoring = dict_merge(default_values, monitoring)
monitoring['custom_scripts_dir'] = custom_scripts_dir
+ monitoring['hostname'] = get_hostname()
monitoring['interfaces_ethernet'] = get_interfaces('ethernet', vlan=False)
monitoring['nft_chains'] = get_nft_filter_chains()