Perl 5.8.1 added hash randomisation (see https://metacpan.org/release/JHI/perl-5.8.1/view/pod/perldelta.pod#Hash-Randomisation). The effect is that multiple invocations of `keys %hash` return the hash keys in different ordering, even between separate runs of the script with the same inputs. As a result, running the script multiple times, yielded non-identical XML output, since the order of the mappings and application lists is different every time. By first sorting the hash keys for the mapping and application hashes before iterating over them, multiple runs of the script with the same inputs result in identical output. |
||
|---|---|---|
| mib2zabbix.pl | ||
| README.md | ||
mib2zabbix
This Perl script will generate a Zabbix v3 Template in XML format from an OID tree in a SNMP MIB file.
Usage
mib2zabbix.pl -o <OID> [OPTIONS]...
Export loaded SNMP MIB OIDs to Zabbix Template XML
-f, --filename=PATH output filename (default: stdout)
-N, --name=STRING template name (default: OID label)
-G, --group=STRING template group (default: 'Templates')
-e, --enable-items enable all template items (default: disabled)
-o, --oid=STRING OID tree root to export (must start with '.')
-v, --snmpver=1|2|3 SNMP version (default: 2)
-p, --port=PORT SNMP UDP port number (default: 161)
SNMP Version 1 or 2c specific
-c, --community=STRING SNMP community string (default: 'public')
SNMP Version 3 specific
-L, --level=LEVEL security level (noAuthNoPriv|authNoPriv|authPriv)
-n, --context=CONTEXT context name
-u, --username=USERNAME security name
-a, --auth=PROTOCOL authentication protocol (MD5|SHA)
-A, --authpass=PASSPHRASE authentication protocol passphrase
-x, --privacy=PROTOCOL privacy protocol (DES|AES)
-X, --privpass=PASSPHRASE privacy passphrase
Zabbix item configuration
--check-delay=SECONDS check interval in seconds (default: 60)
--disc-delay=SECONDS discovery interval in seconds (default: 3600)
--history=DAYS history retention in days (default: 7)
--trends=DAYS trends retention in days (default: 365)
-h, --help print this message
Requirements
- Zabbix v3+
- Perl v5
- Pod::Usage
- XML::Simple
- Net-SNMP
- Correctly configured MIB files
Installation
Install from GitHub:
# install prerequisites on Ubuntu:
apt-get install perl libxml-simple-perl libsnmp-perl
# install prerequisites on RHEL family:
yum install "perl(SNMP)" "perl(XML::Simple)"
# assumes ~/bin exists and is in $PATH, so adjust accordingly!
curl -sL -o ~/bin/mib2zabbix https://raw.githubusercontent.com/cavaliercoder/mib2zabbix/master/mib2zabbix.pl
chmod +x ~/bin/mib2zabbix
Translations
This table describes how MIB elements are translated into Zabbix template elements:
- Scalar OID -> Zabbix SNMP Item
- Table OID -> Zabbix SNMP Discovery Rule
- Table Column OID -> Zabbix Discovery Prototype
- Trap/Notification OID -> Zabbix SNMP Trap Item
- OID Enums -> Zabbix Value Maps
License
mib2zabbix - SNMP Template Generator for Zabbix Copyright (C) 2016 - Ryan Armstrong ryan@cavaliercoder.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.