This commit comprehensive updates the API to ensure full compatibility across all major Zabbix versions (6.0 LTS, 6.2, 6.4, and 7.0 LTS) and introduces a local development environment for multi-version testing.
Verified Zabbix Versions:
- Zabbix 7.0 (LTS): Full support, including native `history.push` for telemetry.
- Zabbix 6.4: Supported (excluding `history.push`); uses `hostgroup.propagate` and UUID-based matching.
- Zabbix 6.2: Supported (excluding `history.push`); uses `hostgroup.propagate` and `templategroup.*` methods.
- Zabbix 6.0 (LTS): Supported (excluding `history.push`); includes specific fallbacks:
- JSON-RPC: Restored `auth` field in request body for versions lacking Bearer token support.
- Permissions: Implemented name-based fallback for host/template groups (no UUIDs in 6.0).
- Group Expansion: Automatic manual expansion of group rights during import.
- API Methods: Fallback from `templategroup.*` to `hostgroup.*` methods.
Key Technical Changes:
- Local Development: Added `zabbix-local` Docker Compose profile to launch a complete Zabbix stack (Server, Web, Postgres) from scratch with dynamic versioning via `ZABBIX_VERSION`.
- Query Optimization: Refined dynamic field selection to handle implied fields and ensure consistent output regardless of initial Zabbix parameters.
- Documentation:
- New `local_development.md` HOWTO guide.
- Updated `README.md` with detailed version compatibility matrix.
- Expanded `roadmap.md` with achieved milestones.
- Testing:
- Updated entire Jest test suite (23 suites, 96 tests) to be version-aware and robust against naming collisions.
- Enhanced Smoketest and Regression Test executors with better cleanup and error reporting.
92 lines
2.3 KiB
YAML
92 lines
2.3 KiB
YAML
services:
|
|
zabbix-graphql-api:
|
|
build:
|
|
context: .
|
|
args:
|
|
- API_VERSION=1.0.0
|
|
ports:
|
|
- "4001:4000"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- SCHEMA_PATH=/usr/app/dist/schema/
|
|
- ZABBIX_DEVELOPMENT_TOKEN=${ZABBIX_DEVELOPMENT_TOKEN}
|
|
- VERBOSITY=${VERBOSITY:-0}
|
|
- LOG_LEVELS=${LOG_LEVELS:-INFO}
|
|
volumes:
|
|
- ./samples:/usr/app/dist/samples
|
|
|
|
apollo-mcp-server:
|
|
image: ghcr.io/apollographql/apollo-mcp-server:latest
|
|
ports:
|
|
- "3000:8000"
|
|
volumes:
|
|
- ./mcp-config.yaml:/mcp-config.yaml
|
|
- mcp-shared:/mcp-data:ro
|
|
- ./mcp/operations:/mcp/operations
|
|
command: /mcp-config.yaml
|
|
environment:
|
|
- APOLLO_GRAPH_REF=local@main
|
|
- MCP_LOG_LEVEL=${MCP_LOG_LEVEL:-info}
|
|
- MCP_LOG_PARAMETERS=${MCP_LOG_PARAMETERS:-false}
|
|
- MCP_LOG_RESPONSES=${MCP_LOG_RESPONSES:-false}
|
|
depends_on:
|
|
schema-gen:
|
|
condition: service_completed_successfully
|
|
zabbix-graphql-api:
|
|
condition: service_started
|
|
|
|
schema-gen:
|
|
image: alpine
|
|
volumes:
|
|
- ./schema:/schema:ro
|
|
- mcp-shared:/mcp-data
|
|
command: sh -c "cat /schema/*.graphql > /mcp-data/schema.graphql"
|
|
|
|
postgres-server:
|
|
image: postgres:16-alpine
|
|
profiles:
|
|
- zabbix-local
|
|
environment:
|
|
- POSTGRES_USER=zabbix
|
|
- POSTGRES_PASSWORD=zabbix
|
|
- POSTGRES_DB=zabbix
|
|
volumes:
|
|
- zbx_db_data:/var/lib/postgresql/data
|
|
|
|
zabbix-server:
|
|
image: zabbix/zabbix-server-pgsql:${ZABBIX_VERSION:-alpine-7.0-latest}
|
|
profiles:
|
|
- zabbix-local
|
|
ports:
|
|
- "10051:10051"
|
|
environment:
|
|
- DB_SERVER_HOST=postgres-server
|
|
- POSTGRES_USER=zabbix
|
|
- POSTGRES_PASSWORD=zabbix
|
|
- POSTGRES_DB=zabbix
|
|
- ZBX_ALLOWUNSUPPORTEDDBVERSIONS=1
|
|
depends_on:
|
|
- postgres-server
|
|
|
|
zabbix-web:
|
|
image: zabbix/zabbix-web-nginx-pgsql:${ZABBIX_VERSION:-alpine-7.0-latest}
|
|
profiles:
|
|
- zabbix-local
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
- ZBX_SERVER_HOST=zabbix-server
|
|
- DB_SERVER_HOST=postgres-server
|
|
- POSTGRES_USER=zabbix
|
|
- POSTGRES_PASSWORD=zabbix
|
|
- POSTGRES_DB=zabbix
|
|
- PHP_TZ=UTC
|
|
- ZBX_ALLOWUNSUPPORTEDDBVERSIONS=1
|
|
depends_on:
|
|
- postgres-server
|
|
- zabbix-server
|
|
|
|
volumes:
|
|
mcp-shared:
|
|
zbx_db_data:
|