]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/commitdiff
zabbix_agentd: Add LocationDB functionality
authorRobin Roevens <robin.roevens@disroot.org>
Thu, 17 Jul 2025 17:52:03 +0000 (19:52 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 18 Jul 2025 10:08:53 +0000 (10:08 +0000)
Adds new IPFire specific monitoring capabilities to Zabbix Agent:
- ipfire.locationdb.lookup[<ip>,<ip>,...]: Perform IPFire LocationDB lookups
  from within Zabbix. Returns a JSON dict.
- ipfire.locationdb.version: Get LocationDB version timestamp in unixtime.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/packages/zabbix_agentd
config/zabbix_agentd/userparameter_locationdb.conf [new file with mode: 0644]
lfs/zabbix_agentd

index 52cb37e933108b604d2c538414615bd0021f5f7c..7f1f39b64c0b8b6359e5b71480cc48db5bb0a0b1 100644 (file)
@@ -23,6 +23,7 @@ var/ipfire/zabbix_agentd/userparameters/userparameter_ipfire.conf
 var/ipfire/zabbix_agentd/userparameters/userparameter_ovpn.conf
 var/ipfire/zabbix_agentd/userparameters/userparameter_gateway.conf
 var/ipfire/zabbix_agentd/userparameters/userparameter_wireguard.conf
+var/ipfire/zabbix_agentd/userparameters/userparameter_locationdb.conf
 var/ipfire/zabbix_agentd/scripts
 var/ipfire/zabbix_agentd/scripts/ipfire_certificate_detail.sh
 var/ipfire/zabbix_agentd/scripts/ipfire_services.pl
diff --git a/config/zabbix_agentd/userparameter_locationdb.conf b/config/zabbix_agentd/userparameter_locationdb.conf
new file mode 100644 (file)
index 0000000..4aa5407
--- /dev/null
@@ -0,0 +1,6 @@
+# Parameters for querying IPFire Location DB
+#
+# Returns Location DB lookup for one or more IP addresses
+UserParameter=ipfire.locationdb.lookup[*],/usr/bin/location lookup $1 $2 $3 $4 $5 $6 $7 $8 $9 2>&1 | awk -F"[[:space:]]*:[[:space:]]*" 'BEGIN { printf "{" } /[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+:/ { printf "%s\"%s\":{",separator,$$1; separator = "," } /^[[:space:]]*Network/ { printf "\"network\":\"" $$2 "\"" } /^[[:space:]]*Country/ { printf ",\"country\":\"" $$2 "\"" } /^[[:space:]]*Autonomous System/ { printf ",\"as\":\"" $$2 "\"}" } /Errno [[:digit:]]+/ { printf "\"error\":\"%s\"",$$0 } END { printf "}" }'
+# Returns the Unix timestamp of the IPFire Location DB version
+UserParameter=ipfire.locationdb.version,date -d"$(/usr/bin/location version)" +%s
index 6d0a6b4ea0c3e0e7cc343de8facb8e2b6ef66754..db43bd61123ae94967a86d862c3696194a4fe5cc 100644 (file)
@@ -116,6 +116,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                /var/ipfire/zabbix_agentd/userparameters/userparameter_gateway.conf
        install -v -m 644 $(DIR_SRC)/config/zabbix_agentd/userparameter_wireguard.conf \
                /var/ipfire/zabbix_agentd/userparameters/userparameter_wireguard.conf
+       install -v -m 644 $(DIR_SRC)/config/zabbix_agentd/userparameter_locationdb.conf \
+               /var/ipfire/zabbix_agentd/userparameters/userparameter_locationdb.conf
 
        # Install IPFire-specific Zabbix Agent scripts
        -mkdir -pv /var/ipfire/zabbix_agentd/scripts