Loading tools/mkzabbix.py +10 −5 Changes for tools/mkzabbix.py: 10 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ PARSER = r'''// snmpdd notification -> {trap: n, rows: {table: {row: {column: va // (zabbix_trap_receiver.pl); OIDs numeric, enterprises.<PEN>... or SNMPDD-MIB names var E = '1.3.6.1.4.1.' + '{$SNMPDD.PEN}'.replace(/\s/g, ''); var STATUS = {ok: '1', warning: '2', critical: '3', unknown: '4'}; var SKIP = 'snmpdd:skip'; var NAMES = %NAMES%; var NOTIFS = %NOTIFS%; function text(hex) { Loading Loading @@ -142,7 +143,7 @@ def js(body): def summary_script(n): return js(''' if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) throw 'not in this notification'; if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) return SKIP; return %s(d.rows[1][0][%d]);''' % (n, 'status' if n == 2 else '', n)) Loading @@ -164,7 +165,7 @@ if (d.trap === %d) { for (var i = 0; i < all.length; i++) if (rowName(%d, all[i]) === NAME && all[i][%d] !== undefined) return %s(all[i][%d]); }%s throw 'not in this notification';''' % (t, t, t, c, 'status' if kind else '', c, event)) return SKIP;''' % (t, t, t, c, 'status' if kind else '', c, event)) def discovery_script(t): Loading @@ -172,7 +173,7 @@ def discovery_script(t): if t == 8: extra = ", '{#DISK}': r[2], '{#ID}': r[3], '{#ATTR}': r[4] || ''" return js(''' if (d.trap !== %d) throw 'not a report of this table'; if (d.trap !== %d) return SKIP; var out = [], all = rows(d, %d); for (var i = 0; i < all.length; i++) { var r = all[i]; Loading @@ -183,13 +184,17 @@ return JSON.stringify(out);''' % (t, t, t, extra)) EVENT_SCRIPT = js(''' if (d.trap !== 11 && d.trap !== 13) throw 'not a SMART event'; if (d.trap !== 11 && d.trap !== 13) return SKIP; var ev = (d.rows[7] || {})[0] || {}; return (d.trap === 13 ? 'self-test failed: ' : 'SMART warning: ') + (ev[2] || '?') + (ev[5] ? ' - ' + ev[5] : '');''') # A JavaScript step can't discard (Zabbix allows no "custom on fail" for it): # the script returns SKIP for a notification that isn't about its item, the # validation step after it discards that. def preprocessing(script): return [{'type': 'JAVASCRIPT', 'parameters': [script], 'error_handler': 'DISCARD_VALUE'}] return [{'type': 'JAVASCRIPT', 'parameters': [script]}, {'type': 'NOT_MATCHES_REGEX', 'parameters': ['^snmpdd:skip$'], 'error_handler': 'DISCARD_VALUE'}] def dependent(name, key, script, value_type='UNSIGNED', units=None, valuemap=None, tags=(), history='90d', Loading zabbix/snmpdd_zabbix_template.yaml +290 −58 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
tools/mkzabbix.py +10 −5 Changes for tools/mkzabbix.py: 10 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ PARSER = r'''// snmpdd notification -> {trap: n, rows: {table: {row: {column: va // (zabbix_trap_receiver.pl); OIDs numeric, enterprises.<PEN>... or SNMPDD-MIB names var E = '1.3.6.1.4.1.' + '{$SNMPDD.PEN}'.replace(/\s/g, ''); var STATUS = {ok: '1', warning: '2', critical: '3', unknown: '4'}; var SKIP = 'snmpdd:skip'; var NAMES = %NAMES%; var NOTIFS = %NOTIFS%; function text(hex) { Loading Loading @@ -142,7 +143,7 @@ def js(body): def summary_script(n): return js(''' if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) throw 'not in this notification'; if (d.trap !== 1 || !d.rows[1] || !d.rows[1][0] || d.rows[1][0][%d] === undefined) return SKIP; return %s(d.rows[1][0][%d]);''' % (n, 'status' if n == 2 else '', n)) Loading @@ -164,7 +165,7 @@ if (d.trap === %d) { for (var i = 0; i < all.length; i++) if (rowName(%d, all[i]) === NAME && all[i][%d] !== undefined) return %s(all[i][%d]); }%s throw 'not in this notification';''' % (t, t, t, c, 'status' if kind else '', c, event)) return SKIP;''' % (t, t, t, c, 'status' if kind else '', c, event)) def discovery_script(t): Loading @@ -172,7 +173,7 @@ def discovery_script(t): if t == 8: extra = ", '{#DISK}': r[2], '{#ID}': r[3], '{#ATTR}': r[4] || ''" return js(''' if (d.trap !== %d) throw 'not a report of this table'; if (d.trap !== %d) return SKIP; var out = [], all = rows(d, %d); for (var i = 0; i < all.length; i++) { var r = all[i]; Loading @@ -183,13 +184,17 @@ return JSON.stringify(out);''' % (t, t, t, extra)) EVENT_SCRIPT = js(''' if (d.trap !== 11 && d.trap !== 13) throw 'not a SMART event'; if (d.trap !== 11 && d.trap !== 13) return SKIP; var ev = (d.rows[7] || {})[0] || {}; return (d.trap === 13 ? 'self-test failed: ' : 'SMART warning: ') + (ev[2] || '?') + (ev[5] ? ' - ' + ev[5] : '');''') # A JavaScript step can't discard (Zabbix allows no "custom on fail" for it): # the script returns SKIP for a notification that isn't about its item, the # validation step after it discards that. def preprocessing(script): return [{'type': 'JAVASCRIPT', 'parameters': [script], 'error_handler': 'DISCARD_VALUE'}] return [{'type': 'JAVASCRIPT', 'parameters': [script]}, {'type': 'NOT_MATCHES_REGEX', 'parameters': ['^snmpdd:skip$'], 'error_handler': 'DISCARD_VALUE'}] def dependent(name, key, script, value_type='UNSIGNED', units=None, valuemap=None, tags=(), history='90d', Loading
zabbix/snmpdd_zabbix_template.yaml +290 −58 File changed.Preview size limit exceeded, changes collapsed. Show changes