From 5db8beb847498e97a5fcf41071d3531dbb6a4836 Mon Sep 17 00:00:00 2001 From: Christoph Gasser Date: Fri, 17 Apr 2026 10:21:05 +0200 Subject: [PATCH] Replace # with - in Zabbix host names (Zabbix 7.x compatibility) Zabbix 7.x rejects '#' in host names. Changed hostname format from 'yodeck#' to 'yodeck-' (e.g. yodeck-54239). Updated SNMP col 1 value and docs for consistency. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 2 +- app/zabbix.py | 4 ++-- snmp/pass_persist.py | 4 ++-- snmp_test.py | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1e6ff88..d407c9d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,7 +54,7 @@ Web UI ``` **SNMP OID structure** — `ENTERPRISE_OID.1.1..`: -- col 1 `STRING` hostname (`yodeck#`) +- col 1 `STRING` hostname (`yodeck-`) - col 2 `STRING` display name - col 3 `INTEGER` online (0/1) - col 4 `STRING` last_seen (ISO-8601) diff --git a/app/zabbix.py b/app/zabbix.py index 1adf194..72da350 100644 --- a/app/zabbix.py +++ b/app/zabbix.py @@ -2,7 +2,7 @@ Zabbix API client for automatic host management. Each Yodeck player becomes a Zabbix host with: - - hostname : yodeck# + - hostname : yodeck- - visible name: "QRS-" + the Yodeck player's display name (e.g. QRS-AMS-COF1) - SNMP v2c interface pointing to this app (APP_HOST:161) - Four SNMP items: online, last_seen, updating, registered @@ -171,7 +171,7 @@ def sync_to_zabbix(players, add_log_fn): created = updated = 0 for player in players: yid = player['id'] - hostname = f"yodeck#{yid}" + hostname = f"yodeck-{yid}" visible = f"QRS-{player['name']}" if hostname not in existing: diff --git a/snmp/pass_persist.py b/snmp/pass_persist.py index ef0fa4f..fec070e 100644 --- a/snmp/pass_persist.py +++ b/snmp/pass_persist.py @@ -5,7 +5,7 @@ net-snmp pass_persist handler for Yodmon. Reads player data from the SQLite database and serves it over SNMP v2c. OID layout (base = ENTERPRISE_OID.1.1): - base.1. STRING "yodeck#" + base.1. STRING "yodeck-" base.2. STRING player display name base.3. INTEGER online (1 = online, 0 = offline) base.4. STRING last_seen (ISO-8601 timestamp) @@ -27,7 +27,7 @@ BASE_OID = f"{ENTERPRISE_OID}.1.1" # (column_index, snmp_type, value_extractor) COLUMNS = [ - (1, 'STRING', lambda p: f"yodeck#{p['id']}"), + (1, 'STRING', lambda p: f"yodeck-{p['id']}"), (2, 'STRING', lambda p: p.get('name') or ''), (3, 'INTEGER', lambda p: str(p.get('online', 0))), (4, 'STRING', lambda p: p.get('last_seen') or ''), diff --git a/snmp_test.py b/snmp_test.py index cf85f38..da7734f 100644 --- a/snmp_test.py +++ b/snmp_test.py @@ -25,7 +25,7 @@ from app.config import DB_PATH, ENTERPRISE_OID from app.database import get_all_players, get_player_counts COLUMNS = [ - (1, 'STRING', 'hostname', lambda p: f"yodeck#{p['id']}"), + (1, 'STRING', 'hostname', lambda p: f"yodeck-{p['id']}"), (2, 'STRING', 'name', lambda p: p.get('name') or ''), (3, 'INTEGER', 'online', lambda p: str(p.get('online', 0))), (4, 'STRING', 'last_seen', lambda p: p.get('last_seen') or ''), @@ -62,7 +62,7 @@ def main(): for p in players: pid = p['id'] - print(f" -- yodeck#{pid} ({p['name']})") + print(f" -- yodeck-{pid} ({p['name']})") for col, typ, label, getter in COLUMNS: oid = f".{base}.{col}.{pid}" val = getter(p)