Instalar SNMP Builder en zabbix 2.3

Por Samuel Ruíz

Para instalar SNMP Builder en zabbix 2.3 hay que instalar primero SNMP Builder 2.0 y luego actualizar los ficheros para zabbix 2.3.

Paso 1: instalar snmp.

yum install net-snmp-utils
Hay un comando con el cual podemos localizar ficheros es el comando locate. Para instalarlo debemos instalar el paquete mlocate
yum search locate (busca paquetes que contengan locate)

yum install mlocate

updatedb (para actualizar la localización del fichero antes de buscar)

locate (nombre del archivo a buscar)

Paso 2: copiar y pegar este script tal cual en la terminal (tener en cuenta que si se actualiza el programa puede que algunas rutas tengan que ser modificadas. Ej: paso 6).

#1. download tar.gz file from github to your favorite directory
#	also name tar file $dist_name
# you may download by browser pointing to http://github.com/atimonin/snmpbuilder/tarball/master, or
wget --content-disposition http://github.com/atimonin/snmpbuilder/tarball/master

#2. Define some variables:
# Zabbix frontend document-root
# 	(for ubuntu it is /var/www/zabbix):
zabbix_frontend=/usr/share/zabbix
# Your favorite directory for downloads (your current dir for ex.)
your_src=$PWD
# Downloaded tar filename (also directory later)
distname=`basename atimonin-snmpbuilder-* .tar.gz`
#
#
#3. untar needed files
tar xvzf $distname.tar.gz

#5. install images for snmpbuilder in zabbix frontend root directory

cd $zabbix_frontend
tar xvzf $your_src/$distname/snmpbuilder-2.0_imgs.tar.gz

#6. patch zabbix frontend
patch -p1 < $your_src/atimonin-snmpbuilder-8b843e2/snmpbuilder-2.0.patch

#7. copy snmpbuilder files to frontend dir
cp -rf $your_src/$distname/zabbix/* $zabbix_frontend

#9. All done, you are again you, exit from sudo

Paso 3: modificar ficheros.

Con esto hemos instalado el SNMP Builder para la versión de zabbix 2.0, por lo que, tenemos que modificar algunos ficheros para hacerlo compatible con zabbix 2.2.

Actualizar ficheros

Ficheros a modificar

— page_header.php 2013-12-09 02:15:15.000000000 -0700
+++ /var/www/html/include/page_header.php 2014-01-21 11:07:30.329000236 -0700
@@ -167,6 +167,7 @@

        }
        $css = CHtml::encode($css);
        $pageHeader->addCssFile('styles/themes/'.$css.'/main.css');
+       $pageHeader->addCssFile('js/jquery/themes/mib/style.css');
 
        if ($page['file'] == 'sysmap.php') {
                $pageHeader->addCssFile('imgstore.php?css=1&output=css');
 

— menu.inc.php 2013-12-09 02:15:15.000000000 -0700
+++ /var/www/html/include/menu.inc.php 2014-01-21 10:34:42.157000373 -0700
@@ -212,6 +212,10 @@

                                'url' => 'services.php',
                                'label' => _('IT services')
                        ),
+                        array(
+                               'url' => 'snmp_builder.php',
+                               'label' => _('SNMP Builder')
+                       ),
                )
        ),
        'admin' => array(
 

— jsLoader.php 2013-12-09 02:15:17.000000000 -0700
+++ /var/www/html/jsLoader.php 2014-01-21 11:09:29.062000234 -0700
@@ -49,6 +49,8 @@

 // available scripts 'scriptFileName' => 'path relative to js/'
 $availableJScripts = array(
+       'snmp_builder.js' => 'snmp_builder/',
+       'DynTable.js' => 'snmp_builder/',
        'common.js' => '',
        'menu.js' => '',
        'menupopup.js' => '',

@@ -63,6 +65,8 @@

        'prototype.js' => '',
        'jquery.js' => 'jquery/',
        'jquery-ui.js' => 'jquery/',
+       'jquery.cookie.js' => 'jquery/',
+       'jquery.jstree.js' => 'jquery/',
        'activity-indicator.js' => 'vendors/',
        // classes
        'class.bbcode.js' => '',
 

— snmp_builder.php 2013-08-01 10:30:18.000000000 -0600
+++ /var/www/html/snmp_builder.php 2014-01-21 11:27:20.505999936 -0700
@@ -29,6 +29,9 @@

 require_once dirname(__FILE__).'/include/items.inc.php';
 require_once dirname(__FILE__).'/include/graphs.inc.php';
 
+error_reporting(E_ALL);
+ini_set('display_errors', '1');
+
 $page['title'] = _('SNMP Builder');
 $page['file'] = 'snmp_builder.php';
 $page['scripts'] = array('DynTable.js', 'snmp_builder.js', 'jquery.js', 'jquery.cookie.js', 'jquery.jstree.js');

@@ -65,7 +68,7 @@

                'oids' =>               array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),
                'idx' =>                array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),
                'mib' =>                array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),
-               'templateid' =>         array(T_ZBX_INT, O_OPT, NULL,   NULL,           NULL),
+               'templateid' =>         array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),
                'server_ip' =>          array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),
                'server_port' =>        array(T_ZBX_STR, O_OPT, NULL,   BETWEEN(1,65535),       NULL),
                'community' =>          array(T_ZBX_STR, O_OPT, NULL,   NULL,           NULL),

@@ -951,14 +954,14 @@

                        'sortfield' => 'name',
                        'sortorder' => ZBX_SORT_UP,
                        'output' => API_OUTPUT_EXTEND,
-                       'selectTemplates' => array('hostid', 'name'),
+                       'selectTemplates' => array('templateid', 'name'),
                        'nopermissions' => 1
                );
        $template = array();
        $template_list = API::Template()->get($options);
        foreach ($template_list as $tnum => $temp)
        {
-               array_push($template, array('key' => $temp['hostid'], 'host' => $temp['name']));
+               array_push($template, array('key' => $temp['templateid'], 'host' => $temp['name']));
        }
 
        return $template;
Las cabaceras que indican el fichero a modificar estan resaltados en verde oscuro (entre @@ estan más o menos las líneas en las que hay que modificar), las partes que hay que eliminar estan resantadas en rojo (y un signo menos al inicio de la línea) y las partes que hay que añadir esta en verde claro (y un signo de suma al inicio de la línea).

Luego iniciamos el servicio snmp

service httpd restart

Import Mib

Si hay algun problema a la hora de importar un mib debemos modificar el siguiente fichero.

cd /usr/share/zabbix/include/views/administration.snmp_builder.php

$mibForm->addItem(makeFormFooter(array(new CSubmit('import', _('Import'))), new CButtonCancel()));

Cambiar por:

$mibForm->addItem(makeFormFooter(new CSubmit('import', _('Import')),new CButtonCancel()));
Los mibs que importemos deben ser .txt para que puedan ser leidos por SNMP Builder

Tutorial SNMP Browser

Para acceder a SNMP Builder seleccionamos la pestaña “configuración » SNMP Builder “.

En esta imagen podemos ver:

  1. Template: elegir la plantilla a la que queremos añadir el ítem.
  2. MIB: seleccionar el Mib correspondiente al elemento que queremos monitorear.
  3. Host: dirección IP del dispositivo.
  4. SNMP Versión: elegir la versión del SNMP.
  5. Community: introducir la comunidad a la que pertenece el dispositivo.
  6. Import: se usará solo cuando queramos importar un nuevo Mib.

Una vez seleccionados estos campos aparecerá a la izquierda el árbol del MIB que se haya seleccionado.

Paso 1: Abrimos las carpetas del árbol y buscamos el que nos interese.
Paso 2: si seleccionamos una hoja del árbol que no tenga un ”+” o un “-” a su izquierda, se mostrará a la derecha en OID el nombre y el valor del mismo. 1)
Paso 3: selecinamos el nombre del OID para añadirlo a las lista de ítems que vamos a añadir a la plantilla.
Paso 4: podemos seleccionar algunas opciones que hacen referencia al ítem y luego crear un gráfico.
Paso 5: por ultimo seleccionamos el botón “save” para aplicar los cambios en nuestra plantilla.

Ventajas

Como ventaja tenemos la facilidad de añadir ítems a una plantilla.

Inconvenientes

No todos los ítems que debería funcionar lo hacen. Además debemos buscarlos uno por uno, ya que no hay ninguna forma de buscar los que funcionen.

1)
Si no se encuentra un valor puede que haya un error ó que no exista ese ítem para el dispositivo seleccionado