Ad Widget

Collapse

API Trigger Request timeout

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • itguy12
    Junior Member
    • Jun 2011
    • 8

    #1

    API Trigger Request timeout

    I have a Perl script that asks ZABBIX for all active triggers. This request is taking very long at times, sometimes never finishing. To combat this for now, I've restricted the statement_timeout for the zabbix DB user in PostgreSQL.

    Here is the Perl snippet:
    Code:
            my $json_request = {
                                jsonrpc => "2.0",
                                method => "trigger.get",
                                params => {
                                            output => "extend",
                                            select_items => "extend",
                                            filter => {
                                                       host => $host,
                                                       value => "1"
                                                      },
                                            sortfield => "lastchange",
                                            sortorder => "DESC",
                                            skipDependent => "1"
                                          },
                                auth => $auth_token,
                                id => 1
                               };
    And the resulting error on PostgreSQL 9.1:
    2012-02-07 20:59:03 GMT ERROR: canceling statement due to statement timeout
    2012-02-07 20:59:03 GMT STATEMENT: SELECT DISTINCT t.*,hg.groupid,h.host,h.hostid FROM triggers t,functions f,items i,hosts_groups hg,rights r,users_groups ug,hosts h WHERE ((t.triggerid BETWEEN 000000000000000 AND 099999999999999)) AND f.triggerid=t.triggerid AND f.itemid=i.itemid AND hg.hostid=i.hostid AND r.id=hg.groupid AND r.groupid=ug.usrgrpid AND ug.userid=25 AND r.permission>=2 AND NOT EXISTS( SELECT ff.triggerid FROM functions ff, items ii WHERE ff.triggerid=t.triggerid AND ff.itemid=ii.itemid AND EXISTS( SELECT hgg.groupid FROM hosts_groups hgg, rights rr, users_groups gg WHERE hgg.hostid=ii.hostid AND rr.id=hgg.groupid AND rr.groupid=gg.usrgrpid AND gg.userid=25 AND rr.permission<2)) AND (hg.groupid IN (6)) AND NOT EXISTS ( SELECT ff.functionid FROM functions ff WHERE ff.triggerid=t.triggerid AND EXISTS ( SELECT ii.itemid FROM items ii, hosts hh WHERE ff.itemid=ii.itemid AND hh.hostid=ii.hostid AND ( ii.status<>0 OR hh.status<>0 ) ) ) AND t.status=0 AND ( (t.value IN (1)) ) AND h.hostid=i.hostid
    Is there anything that can be done to optimize this to avoid these errors?
Working...