Agregando información extra a los mapas de Zabbix

Aunque lo fuerte de Zabbix no es exactamente el diseño de mapas, sí es cierto que éstos permiten poner de forma visible una gran cantidad de información. Sin mucho esfuerzo podemos crear un mapa con un equipo y que muestre información en tiempo real del mismo. El mapa permite una mejor visualización y la información importante allí mostrada, facilita y de qué forma, saber el estado del mismo. A mayores, si el equipo tiene un fallo, éste también estará presente en el mapa, lo cual ya nos da más información.
Sin embargo, una de las cosas que faltaba en los mapas de Zabbix era que sobre equipos con algún fallo se nos mostrase dicho fallo al pasar por encima con el ratón, por ejemplo. De esta forma los errores se pueden visualizar, pero sólo si nos interesa. En caso contrario no se mostrarán. Con un ejemplo gráfico que se entenderá mejor.

En la parte izquierda tenemos un equipo con información, siempre en tiempo real y con dos errores. La forma de saber cuales son esos errores, tal como está ahí en el mapa es ir a la pestaña trigger's de ese equipo y ver cuales están disparados. Sin embargo, tras la modificación que veremos a continuación, tenemos la imagen de la derecha. En ella se observa un pequeño popup que aparece al pasar el ratón por encima de la imagen y que nos muestra la descripción de los trigger's disparados con el color que le corresponde. Esta información no es molesta, puesto que sólo aparece cuando pasamos el ratón por encima del equipo, sino permanece oculta.
Si te interesa aplicar esta pequeña mejora, simplemente debes de editar el fichero include/maps.inc.php y agregar las siguientes líneas (en negrita) al final de la función getActionMapBySysmap.
...
if (!empty($menus)) {
 $r_area->addAction('onclick', 'javascript: '.$menus);
}

if ($db_element['elementtype'] == SYSMAP_ELEMENT_TYPE_HOST) {
 $options = array(
    'hostids' => $db_element["elementid"],
    'output' => array('value', 'description'),
    'nopermissions' => true,
    'filter' => array('value_flags' => null),
    'monitored' => true,
    'skipDependent' => true,
    'only_true' => 1,
 );
 $triggers = API::Trigger()->get($options);
 if(count($triggers) > 0) {
  $text = "";
  $isTable = false;
  foreach($triggers as $t) {
   if($t["value"] == 1) {
    $isTable = true;
    switch ($t['priority']) {
     case 0: $class="normal"; break;
     case 1: $class="information"; break;
     case 2: $class="warning"; break;
     case 3: $class="average"; break;
     case 4: $class="high"; break;
     case 5: $class="disaster"; break;
     }
    $text .= "<tr><td class='".$class."'>".$t['description']."</td></tr>";
   }
  }
  if($isTable) {
   $text = "<div class='nowrap ui-corner-all ui-widget-header header move'>Triggers</div><table class='tableinfo'>".$text."</table>";
   $r_area->addAction('onmouseover', 'hintBox.HintWraper(event, this, '.zbx_jsvalue($text).', \'\', \'\');');
  }
 }
}
$action_map->addItem($r_area);
...
La idea desarrollada es muy simple. Crear una nueva área oculta con javascript y que ante el evento onmouseover aparezca y contenga la información que no interesa. Lo mismo que el popup que salta al pinchar sobre un equipo y que permite ejecutar comandos, pero con otra información.

La entrada Agregando información extra a los mapas de Zabbix la puedes leer en Puppet Linux.


4 comentarios :

  1. Buenos días

    He intentado implementar esta solución y comentarte que no me funciona, la escribo donde indicas y no me salen los mapas, los anula.

    Tengo la versión 2.2.0 de zabbix

    Saludos

    ResponderEliminar
    Respuestas
    1. Este código está probado en la versión 2.0.X de Zabbix.
      La 2.2.X ha cambiado bastante, así que probablemente no funcione y lo tengas que adaptar para que haga el mismo trabajo.

      Eliminar
  2. Hola Javier tu has intentado implementar este código en la versión 2.2.X de zabbix seria bueno una ayuda.

    ResponderEliminar
    Respuestas
    1. Todavía no he probado a pasar el código a la versión 2.2.X de Zabbix. El día que lo haga lo haré saber :-)

      Eliminar

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios