This is a Zabbix template + script useful to monitor Varnish Enterprise instances:
Copy
zabbix-varnish-cache.py
to/usr/local/bin/
.Add the
varnish.discovery
andvarnish.stats
user parameters to Zabbix:UserParameter=varnish.discovery[*],sudo /usr/local/bin/zabbix-varnish-cache.py -i '$1' discover $2 UserParameter=varnish.stats[*],sudo /usr/local/bin/zabbix-varnish-cache.py -i '$1' stats
You'll have to grant
zabbix
user sudo permissions to execute/usr/local/bin/zabbix-varnish-cache.py
in order to let the script performvarnishadm
commands to discover the current active VCL, discover healthiness of each backend, etc.If you'd rather not use sudo, then add
zabbix
user to thevarnish
group in order for the script to be able to retrieve as much data as possible:$ sudo usermod -a --groups varnish zabbix
Import the template. You may download the appropriate version from the releases page or generate it using the Jinja2 skeleton:
$ pip install jinja2-cli $ PYTHONPATH=. jinja2 \ -D version={6.0,6.2,6.4,7.0,7.2} \ [-D name='Varnish Cache'] \ [-D description=''] \ [-D release='trunk'] \ --extension=extensions.zabbix.ZabbixExtension --strict -o template.xml template-app-varnish-cache.j2
Link hosts to the template. Beware you must set a value for the
{$VARNISH_CACHE.LOCATIONS}
macro (comma-delimited list of Varnish Enterprise instance names). Usually you should leave its value blank when running a single Varnish Enterprise instance per server. Additional macros and contexts are available for further customizations.
Please note that this template + script are exclusively intended for Varnish Enterprise instances. It does not require many changes to work with Varnish Cache, but it will not work out of the box, especially if not using version 6.0 LTS: different varnishstat
and varnishadm
outputs, different sets of metrics, etc.