{ "zabbix_export": { "version": "7.4", "template_groups": [ { "uuid": "3cd4e8d0b828464e8f4b3becf13a9dbd", "name": "Printers" } ], "templates": [ { "uuid": "4202e75f163c4232bb172916de8afa2d", "template": "Xerox VersaLink - Monochrome", "name": "Xerox VersaLink - Monochrome", "description": "Xerox VersaLink B&W multifunction printers", "groups": [ { "name": "Printers" } ], "items": [ { "uuid": "45364a48593a41e89b13ec0392f4f582", "name": "Printer Model", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.25.3.2.1.3.1]", "key": "printer.model", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Printer Model", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle hex-encoded SNMP strings\n// Try multiple approaches to convert hex to ASCII\n\n// First, check if it looks like hex (with spaces, newlines, or other separators)\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n // Extract all hex pairs (2 characters)\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n // Only keep printable ASCII (0x20-0x7E)\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n return result;\n }\n }\n}\n\n// Fallback: Remove non-printable characters\nreturn value.replace(/[^\\x20-\\x7E]/g, '');" ] } ] }, { "uuid": "983382594f0a43c895d7951f7161a2b6", "name": "Printer Hostname", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.1.5.0]", "key": "printer.hostname", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Printer Hostname", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle hex-encoded SNMP strings\n// Try multiple approaches to convert hex to ASCII\n\n// First, check if it looks like hex (with spaces, newlines, or other separators)\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n // Extract all hex pairs (2 characters)\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n // Only keep printable ASCII (0x20-0x7E)\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n return result;\n }\n }\n}\n\n// Fallback: Remove non-printable characters\nreturn value.replace(/[^\\x20-\\x7E]/g, '');" ] } ] }, { "uuid": "aefae29a7396430e8bb1e743f62d733d", "name": "Printer Serial Number", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.5.1.1.17.1]", "key": "printer.serial", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Printer Serial Number", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle hex-encoded SNMP strings\n// Try multiple approaches to convert hex to ASCII\n\n// First, check if it looks like hex (with spaces, newlines, or other separators)\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n // Extract all hex pairs (2 characters)\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n // Only keep printable ASCII (0x20-0x7E)\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n return result;\n }\n }\n}\n\n// Fallback: Remove non-printable characters\nreturn value.replace(/[^\\x20-\\x7E]/g, '');" ] } ] }, { "uuid": "ba0b6019551241d883f7982c461a674b", "name": "System Location", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.1.6.0]", "key": "printer.location", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "System Location", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle hex-encoded SNMP strings\n// Try multiple approaches to convert hex to ASCII\n\n// First, check if it looks like hex (with spaces, newlines, or other separators)\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n // Extract all hex pairs (2 characters)\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n // Only keep printable ASCII (0x20-0x7E)\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n return result;\n }\n }\n}\n\n// Fallback: Remove non-printable characters\nreturn value.replace(/[^\\x20-\\x7E]/g, '');" ] } ] }, { "uuid": "5d450a90003a4586b7e6c25cd5229a31", "name": "Toner Part Number", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.6.1.1]", "key": "printer.toner.black.part", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Toner Part Number", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Clean up part number by removing serial numbers and firmware\n// Handles formats like:\n// \"Toner Cartridge;SNACC7952D80730000\" -> \"Toner Cartridge\"\n// \"Black Cartridge HP 58A (CF258A);FW:V4.23.3\" -> \"Black Cartridge HP 58A (CF258A)\"\n// \"Drum Cartridge, PN 101R00554;SN2600A90008100000\" -> \"Drum Cartridge, PN 101R00554\"\n\n// First, apply hex conversion if needed\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n value = result;\n }\n }\n}\n\n// Remove serial numbers (;SN followed by anything)\nvalue = value.replace(/;SN[^;]*/g, '');\n\n// Remove firmware info (;FW: or ;FW followed by anything)\nvalue = value.replace(/;FW[^;]*/g, '');\n\n// Remove any other semicolon-separated metadata\n// (but keep the main description before first semicolon)\nvar parts = value.split(';');\nvalue = parts[0];\n\n// Trim whitespace\nvalue = value.trim();\n\n// For Xerox printers reporting just \"Toner Cartridge\" without PN,\n// try to add known part numbers (must match model-specific logic)\n// This is handled by triggers showing compatibility notes instead\n\nreturn value;" ] } ] }, { "uuid": "6c2f31435baf4f32bd38d451ce07011a", "name": "Toner Current", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.9.1.1]", "key": "printer.toner.black.current", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "description": "Toner Current", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "raw" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle SNMP unknown values (-3, -2, etc.)\n// Per RFC 3805: -1 = other, -2 = unknown, -3 = unknown\n// Convert to 0 to indicate empty/problem state\nvar numValue = parseInt(value);\nif (numValue < 0) {\n return '0';\n}\nreturn value;" ] } ] }, { "uuid": "1b9c7a9bba0b47b7acf20bb3bf0d95fa", "name": "Toner Max", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.8.1.1]", "key": "printer.toner.black.max", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "description": "Toner Max", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "raw" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle SNMP unknown values (-3, -2, etc.)\n// Per RFC 3805: -1 = other, -2 = unknown, -3 = unknown\n// Convert to 0 to indicate empty/problem state\nvar numValue = parseInt(value);\nif (numValue < 0) {\n return '0';\n}\nreturn value;" ] } ] }, { "uuid": "816299e412684db39226c258978c4980", "name": "Toner Level", "type": "CALCULATED", "key": "printer.toner.black", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "params": "round((last(//printer.toner.black.current)/last(//printer.toner.black.max))*100,0)", "description": "Toner Level", "tags": [ { "tag": "component", "value": "supplies" }, { "tag": "type", "value": "level" } ], "units": "%", "triggers": [ { "uuid": "9434fe5b914f438b84541e3d379e25d9", "expression": "last(/Xerox VersaLink - Monochrome/printer.toner.black)<20 and length(last(/Xerox VersaLink - Monochrome/printer.toner.black.part))>0", "name": "Toner Level is low on {{HOST.NAME}}. Current level: {{ITEM.LASTVALUE}}. Replacement part: {{ITEM.LASTVALUE2}} (See compatibility notes for potential alternatives)", "priority": "WARNING", "tags": [ { "tag": "scope", "value": "availability" } ] }, { "uuid": "132e12902ef74bd2bb6664842b009e8f", "expression": "last(/Xerox VersaLink - Monochrome/printer.toner.black)<10 and length(last(/Xerox VersaLink - Monochrome/printer.toner.black.part))>0", "name": "Toner Level is low on {{HOST.NAME}}. Current level: {{ITEM.LASTVALUE}}. Replacement part: {{ITEM.LASTVALUE2}} (See compatibility notes for potential alternatives)", "priority": "HIGH", "tags": [ { "tag": "scope", "value": "availability" } ] } ] }, { "uuid": "d461fd1c161e4f7a89a30cf272b5eb29", "name": "Drum Part Number", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.6.1.6]", "key": "printer.drum.part", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Drum Part Number", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Clean up part number by removing serial numbers and firmware\n// Handles formats like:\n// \"Toner Cartridge;SNACC7952D80730000\" -> \"Toner Cartridge\"\n// \"Black Cartridge HP 58A (CF258A);FW:V4.23.3\" -> \"Black Cartridge HP 58A (CF258A)\"\n// \"Drum Cartridge, PN 101R00554;SN2600A90008100000\" -> \"Drum Cartridge, PN 101R00554\"\n\n// First, apply hex conversion if needed\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n value = result;\n }\n }\n}\n\n// Remove serial numbers (;SN followed by anything)\nvalue = value.replace(/;SN[^;]*/g, '');\n\n// Remove firmware info (;FW: or ;FW followed by anything)\nvalue = value.replace(/;FW[^;]*/g, '');\n\n// Remove any other semicolon-separated metadata\n// (but keep the main description before first semicolon)\nvar parts = value.split(';');\nvalue = parts[0];\n\n// Trim whitespace\nvalue = value.trim();\n\n// For Xerox printers reporting just \"Toner Cartridge\" without PN,\n// try to add known part numbers (must match model-specific logic)\n// This is handled by triggers showing compatibility notes instead\n\nreturn value;" ] } ] }, { "uuid": "0a4d3dc0852744b7a6bc52d1471cb89c", "name": "Drum Current", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.9.1.6]", "key": "printer.drum.current", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "description": "Drum Current", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "raw" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle SNMP unknown values (-3, -2, etc.)\n// Per RFC 3805: -1 = other, -2 = unknown, -3 = unknown\n// Convert to 0 to indicate empty/problem state\nvar numValue = parseInt(value);\nif (numValue < 0) {\n return '0';\n}\nreturn value;" ] } ] }, { "uuid": "727bd2d798bd4659ae2d9ce8dd06c82c", "name": "Drum Max", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.8.1.6]", "key": "printer.drum.max", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "description": "Drum Max", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "raw" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Handle SNMP unknown values (-3, -2, etc.)\n// Per RFC 3805: -1 = other, -2 = unknown, -3 = unknown\n// Convert to 0 to indicate empty/problem state\nvar numValue = parseInt(value);\nif (numValue < 0) {\n return '0';\n}\nreturn value;" ] } ] }, { "uuid": "6f3a650b617249629098c046a0016825", "name": "Drum Level", "type": "CALCULATED", "key": "printer.drum", "delay": "1h", "history": "90d", "trends": "365d", "value_type": "FLOAT", "params": "round((last(//printer.drum.current)/last(//printer.drum.max))*100,0)", "description": "Drum Level", "tags": [ { "tag": "component", "value": "supplies" }, { "tag": "type", "value": "level" } ], "units": "%", "triggers": [ { "uuid": "5e95825e6d61431bbcf023b906905947", "expression": "last(/Xerox VersaLink - Monochrome/printer.drum)<20 and length(last(/Xerox VersaLink - Monochrome/printer.drum.part))>0", "name": "Drum Level is low on {{HOST.NAME}}. Current level: {{ITEM.LASTVALUE}}. Replacement part: {{ITEM.LASTVALUE2}} (See compatibility notes for potential alternatives)", "priority": "WARNING", "tags": [ { "tag": "scope", "value": "availability" } ] }, { "uuid": "c60c7f50ea824ee48d58a0ffcfd9a602", "expression": "last(/Xerox VersaLink - Monochrome/printer.drum)<10 and length(last(/Xerox VersaLink - Monochrome/printer.drum.part))>0", "name": "Drum Level is low on {{HOST.NAME}}. Current level: {{ITEM.LASTVALUE}}. Replacement part: {{ITEM.LASTVALUE2}} (See compatibility notes for potential alternatives)", "priority": "HIGH", "tags": [ { "tag": "scope", "value": "availability" } ] } ] }, { "uuid": "77ed4ed118ab4694b8dac4a4d66ea6f8", "name": "Transfer Roller Part Number", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.6.1.10]", "key": "printer.transfer.roller.part", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Transfer Roller Part Number", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Clean up part number by removing serial numbers and firmware\n// Handles formats like:\n// \"Toner Cartridge;SNACC7952D80730000\" -> \"Toner Cartridge\"\n// \"Black Cartridge HP 58A (CF258A);FW:V4.23.3\" -> \"Black Cartridge HP 58A (CF258A)\"\n// \"Drum Cartridge, PN 101R00554;SN2600A90008100000\" -> \"Drum Cartridge, PN 101R00554\"\n\n// First, apply hex conversion if needed\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n value = result;\n }\n }\n}\n\n// Remove serial numbers (;SN followed by anything)\nvalue = value.replace(/;SN[^;]*/g, '');\n\n// Remove firmware info (;FW: or ;FW followed by anything)\nvalue = value.replace(/;FW[^;]*/g, '');\n\n// Remove any other semicolon-separated metadata\n// (but keep the main description before first semicolon)\nvar parts = value.split(';');\nvalue = parts[0];\n\n// Trim whitespace\nvalue = value.trim();\n\n// For Xerox printers reporting just \"Toner Cartridge\" without PN,\n// try to add known part numbers (must match model-specific logic)\n// This is handled by triggers showing compatibility notes instead\n\nreturn value;" ] } ] }, { "uuid": "39ea5ea68c644db79aa6d72cb5af74b6", "name": "Fuser Part Number", "type": "SNMP_AGENT", "snmp_oid": "get[1.3.6.1.2.1.43.11.1.1.6.1.12]", "key": "printer.fuser.part", "delay": "1h", "history": "90d", "trends": "0d", "value_type": "TEXT", "description": "Fuser Part Number", "tags": [ { "tag": "component", "value": "printer" }, { "tag": "type", "value": "info" } ], "preprocessing": [ { "type": "JAVASCRIPT", "parameters": [ "// Clean up part number by removing serial numbers and firmware\n// Handles formats like:\n// \"Toner Cartridge;SNACC7952D80730000\" -> \"Toner Cartridge\"\n// \"Black Cartridge HP 58A (CF258A);FW:V4.23.3\" -> \"Black Cartridge HP 58A (CF258A)\"\n// \"Drum Cartridge, PN 101R00554;SN2600A90008100000\" -> \"Drum Cartridge, PN 101R00554\"\n\n// First, apply hex conversion if needed\nvar hexPattern = /^[0-9A-Fa-f\\s]+$/;\nif (hexPattern.test(value) && value.length > 4) {\n var hexBytes = value.match(/[0-9A-Fa-f]{2}/g);\n if (hexBytes && hexBytes.length > 0) {\n var result = '';\n for (var i = 0; i < hexBytes.length; i++) {\n var code = parseInt(hexBytes[i], 16);\n if (code >= 32 && code <= 126) {\n result += String.fromCharCode(code);\n }\n }\n if (result.length > 0) {\n value = result;\n }\n }\n}\n\n// Remove serial numbers (;SN followed by anything)\nvalue = value.replace(/;SN[^;]*/g, '');\n\n// Remove firmware info (;FW: or ;FW followed by anything)\nvalue = value.replace(/;FW[^;]*/g, '');\n\n// Remove any other semicolon-separated metadata\n// (but keep the main description before first semicolon)\nvar parts = value.split(';');\nvalue = parts[0];\n\n// Trim whitespace\nvalue = value.trim();\n\n// For Xerox printers reporting just \"Toner Cartridge\" without PN,\n// try to add known part numbers (must match model-specific logic)\n// This is handled by triggers showing compatibility notes instead\n\nreturn value;" ] } ] } ] } ] } }