Commit Graph

22 Commits

Author SHA1 Message Date
ecafc5a48a Remove players deleted from Yodeck instead of showing them as offline
Poll loop now deletes DB rows for players no longer returned by the
Yodeck API, and Zabbix sync deletes the corresponding hosts from the
Yodeck Players group. Both actions are reflected in the activity log.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 18:02:03 +02:00
31e7b93546 time local 2026-04-20 09:04:02 +02:00
c7ff9f162c new version 2026-04-20 09:00:42 +02:00
a2358ed0c3 Update CLAUDE.md: OID col 7, visible name formula, template group permissions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:58:27 +02:00
2034f275d0 Improve template-not-found diagnostics
When template.get returns nothing, make a second call to list up to 5
visible templates so the log shows whether the API token can see any
templates at all. This pinpoints whether the issue is a name mismatch
or a template-group permission gap.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:54:29 +02:00
3889bc971a Fix template lookup and surface template-not-found errors to web UI
- get_template_id: switch from filter to search so the API token user
  can find templates they have read access to (filter requires exact
  visibility that search does not)
- When the template is not found, write the warning to the DB log so
  it appears in the web dashboard, not only in Docker container logs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:52:10 +02:00
adadf9de76 Fix: per-host error handling in sync loop
A single host failure (e.g. macro already exists, permission error)
was aborting the entire sync loop for all 310 hosts. Each host is
now wrapped in try/except — failures are logged as warnings and the
loop continues. Also logs when template is linked to an existing host.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:47:18 +02:00
0a992615ae Fix template UUIDs: use 32-char hex without hyphens (Zabbix format)
Zabbix expects UUIDv4 as 32 hex characters without hyphens,
not the standard hyphenated UUID format.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:43:37 +02:00
79b4266d2b Fix template: move triggers inside items (Zabbix 7.x format)
In Zabbix 7.x, triggers must be nested within their parent item
rather than defined at the template level.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:41:52 +02:00
e16b542d1b Add Zabbix template with offline and last-seen triggers
- zabbix_template.yaml: importable template "Yodmon Yodeck Player"
  - 5 SNMP items using {$YODECK_ID} host macro for per-host OIDs
  - Trigger: offline warning after 30 minutes (yodeck.online < 1)
  - Trigger: last seen > 4 hours (now() - yodeck.last_seen_ts > 14400)
- snmp/pass_persist.py: add col 7 — last_seen as Unix timestamp
- app/zabbix.py: link hosts to template, upsert {$YODECK_ID} macro;
  existing hosts get template linked on next sync automatically
- app/config.py: add ZABBIX_TEMPLATE setting

Import zabbix_template.yaml once via Zabbix UI, then redeploy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:39:48 +02:00
c35850dc3d Change visible name format to QRS-{site}MB-{screen}
New format: QRS- + first 4 chars + MB- + remainder
Example: AMS-COF1 -> QRS-AMS-MB-COF1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:32:21 +02:00
1c95f9a097 Update CLAUDE.md with current state
- Correct web UI port (8088 not 8080 in Docker)
- Add ZABBIX_API_TOKEN to config table
- Document hostname format (yodeck- not yodeck#)
- Document visible name format (QRS- prefix)
- Add Zabbix 7.x setup requirements (group permissions, admin role)
- Document Bearer token auth approach

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:27:11 +02:00
5db8beb847 Replace # with - in Zabbix host names (Zabbix 7.x compatibility)
Zabbix 7.x rejects '#' in host names. Changed hostname format from
'yodeck#<id>' to 'yodeck-<id>' (e.g. yodeck-54239).
Updated SNMP col 1 value and docs for consistency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:21:05 +02:00
fc6a0c1605 Improve hostgroup permission error message
When the API token user cannot see the host group (returns empty from
hostgroup.get), the code fell through to hostgroup.create and gave a
confusing permissions error. Now catches this and explains exactly what
to fix in Zabbix (User groups -> Permissions).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:16:49 +02:00
b53f6c9aed Fix Zabbix API token auth for Zabbix 6.4+
Zabbix 6.4+ rejects API tokens in the JSON-RPC "auth" field.
Tokens must now be sent as "Authorization: Bearer <token>" HTTP header.
User/password sessions still use the payload auth field as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:11:53 +02:00
525158e9c6 Update docker-compose.yml 2026-04-17 10:10:02 +02:00
2695379589 Add Zabbix API token authentication support
ZABBIX_API_TOKEN env var can now be used instead of ZABBIX_USER +
ZABBIX_PASSWORD. When set, the token is passed directly as the auth
value in JSON-RPC calls and no login/logout session is created.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:07:47 +02:00
7d18f20bf1 Update docker-compose.yml 2026-04-17 10:05:18 +02:00
38357725c4 Prefix Zabbix visible name with QRS-
Zabbix host visible name is now "QRS-<yodeck_name>" (e.g. QRS-AMS-COF1).
Existing hosts will be renamed on the next Yodeck poll.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:03:50 +02:00
779126327c Update docker-compose.yml 2026-04-17 10:01:51 +02:00
b5afb79021 Update docker-compose.yml 2026-04-17 09:36:34 +02:00
9fc3e97546 Initial commit: Yodmon Yodeck→Zabbix bridge
- Yodeck API poller (every 10 min, paginated, 310 players)
- SQLite persistence (players + activity logs)
- SNMP v2c agent via net-snmp pass_persist
- Zabbix API auto host creation/update (6.0+)
- Flask web dashboard with live player status and log
- Docker deployment with persistent volume
- dev_server.py for local testing without Docker

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 09:31:00 +02:00