Set up a repository for custom Zabbix templates and add the first template for Dell PowerVault ME storage systems. - Add conventions, version policy, and release documentation. - Add validation, index, packaging, export, and import-test scripts. - Add a disposable Zabbix test stack with version-aware imports. - Add PowerVault ME SNMP exports for Zabbix 7.0 and 8.0. - Cover system information, unit health, sensors, ports, and firmware revisions.
Zabbix Custom Templates
A collection of custom Zabbix templates targeting Zabbix 7.0 LTS and 8.0 LTS.
Supported Versions
| Zabbix | Status |
|---|---|
| 7.0 LTS | Primary |
| 8.0 LTS | Export added (tested with 8.0.0 development build) |
See docs/versioning.md for the version directory policy.
Templates
| ID | Template | Version | Zabbix | Tested | Description |
|---|---|---|---|---|---|
| san/dell_powervault_me | Dell PowerVault ME by SNMP | 1.0.0 | 7.0+ | 7.0, 8.0 | Monitors Dell PowerVault ME storage systems via SNMP, including system information, unit health, sensors, ports, and firmware revisions. |
Repository Layout
templates/<category>/<product>/
├── README.md
├── CHANGELOG.md
├── manifest.yaml
├── 7.0/
│ └── template_....yaml
└── assets/ # optional
templates/: Template packages. One directory is one import unit.global/: Shared configuration that is not included in template exports, such as global scripts and media types.docs/: Conventions, version policy, and release process.scripts/: Scaffolding, validation, export, and packaging scripts.tests/: Disposable Zabbix and PostgreSQL stack for import tests.
Requirements
- Python 3.10 or later
- PyYAML and yamllint
- Docker and Docker Compose (for import tests)
- curl, jq, and zip
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements-dev.txt
Adding a Template
make new \
CATEGORY=app \
PRODUCT=apache \
NAME="Apache by HTTP" \
METHOD=http
METHOD defaults to agent. Use PRODUCT=cisco/ios when vendor grouping is needed.
After scaffolding, export the template from the matching Zabbix version as YAML and place it under templates/app/apache/7.0/ or templates/app/apache/8.0/. Remove the .gitkeep file once the export is in place.
make lint # YAML lint and manifest validation
make index # Update the template list in README.md
make import-test # Import into a disposable Zabbix instance
make import-test requires access to the Docker daemon. The test Zabbix stack is defined in tests/compose.yaml and is removed on exit. To keep the stack running, use KEEP_STACK=1 make import-test.
The import test detects the Zabbix server version and imports only the matching version directory. To test Zabbix 8.0, override the image tags:
ZBX_SERVER_IMAGE=alpine-8.0-latest \
ZBX_WEB_IMAGE=alpine-8.0-latest \
ZBX_TEST_PROJECT=zabbix-templates-test-8 \
make import-test
If the 8.0 image is not published yet, use alpine-trunk for the development build.
Importing a Template
Open Data collection > Templates in Zabbix, choose Import, and select the YAML file under templates/<...>/7.0/ or templates/<...>/8.0/ depending on your Zabbix version. Exports include linked templates, so a single import is normally sufficient.
Packaging
make package
Distribution zips are written to dist/. The dist/ directory is not tracked by Git.
Documentation
- Naming, macros, and trigger conventions
- Zabbix version policy
- Release process
- Template README scaffold
Notes
- Never commit secrets such as SNMP communities, API tokens, or passwords.
- When a template is derived from an official or community template, record the upstream URL in
manifest.yamlundersourceand comply with the original license. - This repository does not have a repository-wide license yet. Add a
LICENSEfile before publishing.