ZABBIXのUserParameterとsudo

Oracleアーカイブログ領域を監視するためにこんなSQL文をつくりました。

set echo off
set trim off
set pagesize 0
set newpage none
set feedback off
column percent_spcae_usage format 99.99
select ltrim(percent_space_used) from v$flash_recovery_area_usage where file_type='ARCHIVED LOG' ;
exit ;

でもって、zabbix_agentd.confにsudo -u oracleで上記SQL文を実行させるように記述。

UserParameter=oracle.archivelog_used_percent,sudo -u oracle sh -c "export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin:/opt/oracle/product/11.2.0/db_1/bin; export ORACLE_HOME=/opt/oracle/product/11.2.0/db_1 ; export ORACLE_SID=oracle_sid; sqlplus -S hoge/fuga as sysdba @/home/oracle/mm.sql | sed -e 's/ //g'"

ところが、このsudoが動作しない。zabbix agentのログレベルを上げても特になにも行って来ません。
文法的には間違っていないし、shellから動作させるとちゃんと動く。shellからなら動くが、cronやsudoから動作しないとなると環境変数か、ttyの制限。環境変数については上記のとおり、sudo中に全部書いたのでおそらく無罪。
sudu ttyで検索すると、やっぱりデフォルトではttyがないとsudoは動作しないとのこと。
visudoででてくるこいつですね。

Defaults    requiretty

zabbixユーザ(zabbix agentを動作させているユーザ)はtty不要にします。以下一行visudoでsudoerへ追加。

Defaults:zabbix    !requiretty

これで値がちゃんと取れるようになりました。