Nagios Auto-Complete for the Search Box

Posted on Posted in Nagios

Cuantas veces empiezas a introducir el nombre de un Host en el cuadro de búsquedas de Nagios y no recuerdas exactamente el nombre?, o recuerdas solo una parte de él?.
En ese momento vendría bastante bien una auto-búsqueda que te mostrara los host con nombre similiar, seleccionando así el host que realmente estabas buscando.

Requisitos:

Pues bien con Java-Script podemos hacerlo, lo único que necesitamos es:

Instalación:

Si tomamos como ruta de instalación de Nagios “/usr/local/etc/nagios”.

jquery.zip

Accedemos a la carpeta share de nuestra instalación de Nagios, y descomprimimos el contenido del zip jquery.zip dentro de la carpeta share/js. Nos tienen que quedar dos nuevos archivos, jquery.js jquery-ui.js, y una nueva carpeta jquery-ui/.

snaiderWEB:~/js# unzip jquery.zip
Archive:  jquery.zip
   creating: jquery-ui/
  inflating: jquery-ui.js
   creating: jquery-ui/images/
  inflating: jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png
 extracting: jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png
  inflating: jquery-ui/images/ui-bg_flat_10_000000_40x100.png
  inflating: jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png
  inflating: jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png
  inflating: jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png
  inflating: jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png
  inflating: jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
  inflating: jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
  inflating: jquery-ui/images/ui-icons_222222_256x240.png
  inflating: jquery-ui/images/ui-icons_228ef1_256x240.png
  inflating: jquery-ui/images/ui-icons_ef8c08_256x240.png
  inflating: jquery-ui/images/ui-icons_ffd27a_256x240.png
  inflating: jquery-ui/images/ui-icons_ffffff_256x240.png
  inflating: jquery-ui/jquery-ui.css
  inflating: jquery.js

Nos aseguramos que los permisos son los correctos

chmod -R a+r /usr/local/etc/nagios/share/js/*
sidebar.html

Tenemos que modificar este fichero para cargar jquery y configurar la auto-búsqueda, para ello:

  • Modificamos las líneas 10 y 11 de dicho fichero, agregando los dos script’s de java extraídos anteriormente
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-ui.js"></script> <link rel="stylesheet" type="text/css" href="js/jquery-ui/jquery-ui.css" media="screen, projection" />
  • Configuramos la auto-búsqueda, editando la entrada del Search-box, línea 16
<div id="search_box">
          <form action="/nagios/cgi-bin/status.cgi" id="search_form" method="get" target="main">
                    <input id="search" name="host" type="text" />
                    <input type="hidden" name="navbarsearch" value="1" />
                    <input src="images/interface/search.gif" alt="OK" title="Search" id="search_submit" type="image" />
          </form>
</div>
<script type="text/javascript">
          $(document).ready(function() {
                    jQuery.get('hosts.txt', function(data) {
                              hosts = data.split('\n');
                              $( "#search" ).autocomplete({
                                        source: hosts
                              })
                    });
          });
</script>
 hosts.txt

Como podemos ver en el script creado anteriormente vamos a usar un fichero llamado hosts.txt para realizar la búsqueda, el cual tendrá todos los hosts que nuestro sistema de monitorización está chequeando.

Para generar este fichero podemos editar el reload de Nagios para que así cada vez que carguemos una nueva configuración este fichero se recreé.

Creamos un script intermedio, el cual será llamado por el script principal de Nagios cada vez que hagamos un reload. Creamos generatehosts.sh

#!/bin/sh

bin/cat /usr/local/etc/nagios/var/objects.cache | /bin/grep "host_name" | /bin/sed 's/\s*host_name\s*//g' | /bin/sort | /usr/bin/uniq > /usr/local/etc/nagios/share/hosts.txt

Modificamos el script /etc/init.d/nagios, y agregamos este script en la parte de reload

reload|force-reload)
                printf "Running configuration check..."
                $NagiosBin -v $NagiosCfgFile
                if [ $? -eq 0 ]; then
                        echo "done."
                        if test ! -f $NagiosRunFile; then
                                $0 start
                        else
                                pid_nagios
                                if status_nagios > /dev/null; then
                                        printf "Reloading nagios configuration..."
                                        killproc_nagios nagios -HUP
                                        echo "done"
                                        echo " "
                                        echo "Building Host...."
                                        /usr/local/etc/nagios/bin/generatehosts.sh
                                        echo "done"
                                else
                                        $0 stop
                                        $0 start
                                fi
                        fi
                else
                        echo " CONFIG ERROR!  Reload aborted.  Check your Nagios configuration."
                        exit 1
                fi
                ;;

Comprobamos que la auto-búsqueda funciona:

One thought on “Nagios Auto-Complete for the Search Box

  1. AleChe post nerdoso! lolDomanda da noob: cmd e’ la shell di Windows ed e’ il creoisprttivo di Bash (shell testuale). E’ possibile fare la stessa cosa in Windows? Oppure bisogna installarsi altre shell tipo cygwin o win-bash??? Il creoisprttivo del file .sh nel mondo windows sarebbe il famoso .bat?salutiPS: per tenermi aggiornato su questo post in automatico senza dover rivisitare il tuo blog come faccio? vorrei usare google reader si puo’?

Leave a Reply

Your email address will not be published. Required fields are marked *