With Zabbix review and export (backup)/import you can create review mechanism and save/restore zabbix configuration as code (Monitoring as Code)
You can export (backup) all hosts templates and other object with zabbix-export.py
script.
You can also import (restore) many types of zabbix objects from YAML dump with zabbix-import.py
script (note that order of import is
matters, i.e., you cant add user if there is no mediatype for them, etc...). Already existed objects will be skipped. Object type is
autodetected, but may be pointed manually (it is much faster for single-file import operations)/
If you want use review (or Monitoring as Code:
It's simple to start use this script as backup mechanism:
# git clone THIS_REPO or download and unpack archive
python -mpip install -r requirements.txt
# smoke test :)
python ./zabbix-export.py --help
# backup to current folder, save XML and JSON
python ./zabbix-export.py --zabbix-url https://zabbix.example.com --zabbix-username user --zabbix-password password
# backup only hosts in YAML format
python ./zabbix-export.py --save-yaml --zabbix-url https://zabbix.example.com --zabbix-username user --zabbix-password password --only hosts
# backup to custom folder in YAML format
python ./zabbix-export.py --save-yaml --directory /home/username/path/to/zabbix-yaml --zabbix-url https://zabbix.example.com --zabbix-username user --zabbix-password password
Few examples:
export ZABBIX_URL="https://zabbix.instan.ce"
export ZABBIX_USERNAME="user.name"
export ZABBIX_PASSWORD="secret"
./zabbix-import.py /path/to/file.yaml
./zabbix-import.py --type host /path/fo/repo/hosts/*
You want to make review (Moniroting as Code). Read more on habr.com: RU, EN translated
groupname/zabbix-review-export
)groupname/zabbix-xml
and groupname/zabbix-yaml
. Do first (init) commit (create empty README.md
).master
and develop
. In repository groupname/zabbix-xml
set develop
as a default branch..gitlab-ci.yml
and leave the ones you need job in .gitlab-ci.yml
and change to you environment (see commented examples block).YAML zabbix
develop=>master
in zabbix-yaml
. For first time you can merge without review, it's too hard :)Use two repositories for XML+JSON (raw-format) and readable YAML format:
XML
+ JSON
will be useful if you want restore some object after remove or a large number of changes.YAML
format is more suitable for people to read and review changes. The script removes all empty values.Create empty merge request develop=>master
after merge and receive notifications at changes (schedule or manual jobs run) on your email.
To answer for the question "Who make this changes?" you need use Zabbix Audit. It's difficult but possible.
Use standard zabbix export functional:
Representing objects as JSON using the API:
YAML change action:
YAML change trigger expression:
YAML link template
XML change templates (but we recommend use YAML for review and XML only for backup):