This is a Zabbix template + script useful to monitor Varnish Enterprise instances:
Copy
zabbix-varnish-cache.pyto/usr/local/bin/.Add the
varnish.discoveryandvarnish.statsuser 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
zabbixuser sudo permissions to execute/usr/local/bin/zabbix-varnish-cache.pyin order to let the script performvarnishadmcommands to discover the current active VCL, discover healthiness of each backend, etc.If you'd rather not use sudo, then add
zabbixuser to thevarnishgroup 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,7.4} \ [-D name='Varnish Cache'] \ [-D description=''] \ [-D release='trunk'] \ --extension=extensions.zabbix.ZabbixExtension --strict -o template.xml template-app-varnish-cache.j2Link 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.