If zabbix userparameter command returns non-zero exit code, item becomes “unsupported”. Triggers depending on this item become broken without any alert. Here is a good example: you monitor number of active php_fpm processes by getting and parsing URL specified in pm.status_path . But when number of active processes reaches maximum, it won’t work: to display status, you need new php process, and it can not start any more.

First solution: you can enable monitoring of not supported items in Configuration - Actions - “Event source:internal” - “Report not supported items”. It is not always a good option, because you may have many periodically unsupported items in your setup, and you don’t want to be bothered by every one of them.

Here is second solution: write user parameter commands so, that if command result was non-zero, they report unusual value, switching trigger to ‘ERROR’:

UserParameter = php_fpm . active_processes , ( curl -- max - time 2 -- silent http :// localhost / php_fpm_status || echo 'active processes: 9999' ) | grep '^active processes' | tr - s ' ' | cut - d ' ' - f 3

UPDATE: Since 3.4 Zabbix checks user parameters exit code and shows stdout and stderr in frontend: documentation. But relevant trigger becomes silently broken anyway.