Community template repository
To ensure the Community template repository remains convenient and useful for all users, contributors must adhere to the practices outlined below.
Directory structure and naming rules
-
Each template must reside in its own folder inside the appropriate category:
- You may create additional subcategories if needed (e.g., for a specific vendor like Server_Hardware/Dell, or a logical subset of a parent category such as Applications/Web-servers). Avoid unnecessary complexity in the hierarchy.
- Allowed characters for subcategory names:
[a-zA-Z0-9_-]. - Do not place a new template inside the folder of an existing template. If your template is distinct from another contributor's, create a new folder for it rather than modifying or overwriting theirs.
- If you notice issues with an existing template, we encourage you to first reach out to the template's author (if possible) and ask them to address the problems instead of submitting a pull request with fixes yourself. This helps to respect the original author's intent and avoids unnecessary maintenance burden on the reviewers.
-
Template folder name requirements:
- Must start with
template_(lowercase). - Should match the regex:
^template_[.a-zA-Z0-9()_-]+$. - Keep names short, human-readable, and descriptive, for example:
template_linux_services. Bad example:template_microsoft_iis_7.5,_8.0,_8.5_and_10_services,_ports_and_performance_counters.
- Must start with
-
Separate subfolders must exist for each supported Zabbix version. The format for these version directories is
X.X, whereX.Xrefers to the major version (7.0,7.4, etc.). Ensure that the template file inside each version folder is actually exported for that version of Zabbix. It is acceptable to skip some Zabbix versions if the template is identical across them (the template import is backwards compatible and you can import templates for previous versions into newer Zabbix version). -
Each version folder must contain only:
-
One template file in YAML, JSON, or XML format:
- Filename must match the regex:
^template_[.a-zA-Z0-9()_-]+\.(yaml|json|xml)$. - Prefer YAML, as it is the current default export format in Zabbix. There is no need to provide multiple formats.
- Filename must match the regex:
-
An optional
README.mdfile (recommended):- If provided, it should include user-facing information: setup instructions, which macros are required to be filled, a list of metrics and triggers, etc. Do not leave it empty or simply containing link to private resources/repositories with instructions. Wherever possible, include complete instructions directly in the README.
- If referring to external documentation, link only to official or publicly accessible resources.
- If provided, it should be present for each version subfolder.
- It is recommended to include your name or username as the author in both the
README.mdand the template's internal description.
-
An optional
filesfolder:- Place any additional files here - e.g., scripts for external checks, user parameters, images, helper utilities, etc.
- Do not link to private repositories, file-sharing services, or inaccessible resources. Always aim to make these files directly available in the repository. Linking to official, well-known third-party projects that are required for the template (such as the
node_exporterrepository for a Linux monitoring template) is acceptable, and can be noted in theREADME.md. - It's also possible to specify instructions instead of providing separate files for such cases as user parameters (you could provide instructions on how to create these directly in the
README.md).
-
-
Do not upload templates as compressed (e.g.,
.zip,.tar.gz) files.
Template dependencies and import
- The template must import without errors on a fresh installation of the corresponding Zabbix version.
- If the template depends on other templates, include them in the export file (in the Zabbix frontend, you can select multiple templates before exporting.) This also ensures the proper template import even on a fresh Zabbix server installation.
- Avoid creating unnecessary or overly complex template linkages, which could complicate importing or managing the template.
- Ensure that all necessary resources (e.g., scripts, user parameters) are either included in the
filesfolder or described clearly in theREADME.md.
Licensing
- All community templates and additional files in this repository are published under the MIT license. Third-party licenses, even the compatible ones (for example, GPL v2/v3) are not accepted.
- Do not publish third-party software that uses such licenses as additional files. If such software is necessary for the template to function, provide a link to its official project page instead.
Examples
Correct directory structure
template_name
├── 7.0
| ├── template_name.yaml
| ├── README.md
| ├── files
| | ├── other_files
| | ├── external_check.sh
| | ├── user_parameters.conf
| | ├── ...
├── 7.4
| ├── template_name.yaml
| ├── README.md
| ├── files
| | ├── other_files
| | ├── external_check.sh
| | ├── user_parameters.conf
| | ├── ...
Incorrect directory structure
Missing version directory:
template_name
├── template_name.yaml
├── README.md
├── files
| ├── other_files
| ├── external_check.sh
| ├── user_parameters.conf
| ├── ...
Multiple template files:
template_name
├── 7.0
| ├── template_name_1.yaml
| ├── template_name_2.yaml
| ├── template_name_3.yaml
| ├── README.md
| ├── files
| | ├── other_files
| | ├── external_check.sh
| | ├── user_parameters.conf
| | ├── ...
Compressed files are not allowed:
template_name
├── 7.0
| ├── template_name.zip
All files in the same directory:
template_name
├── 7.0
| ├── template_name.yaml
| ├── README.md
| ├── external_check.sh
| ├── script.py
| ├── user_parameters.conf