Zabbix manejo

De ICEnetX Docs

Tabla de contenidos

Creando un mapa

Zabbix nos permite crear mapas, los mapas sirven para generar una imagen que proyecte el esquema de nuestra red, como esta conectada, los dispositivos que la forman, sus nodos. Podemos crear mapas que tengan servidores, terminales, switches, routers, firewalls etc.

Para crear un mapa nos loguearemos con el usuario admin, entrando a zabbix con la ip donde esta el servidor zabbix, en nuestro caso (http://127.0.0.1/zabbix). Iremos a la sección de "Configuración" clickeando en la pestaña correspondiente y posteriormente elegiremos la opción mapa.

Tendremos aquí un botón que dice "Add Element" el cual nos permite agregar elementos a un mapa.

Los campos que nos mostrara la opción "Add Element" son:

Tipo: Aqui seleccionamos "Host"
Label: Es el nombre que el dispositivo recibirá para ser identificado en el mapa.
Label Location: Nos permite colocar elemento en la parte superior, inferior, izquierda o derecha del mapa.
Host: Aqui elegiremos el dispositivo a ser monitoreado.
Icon: Es el icono que el dispositivo tendrá para verse en el mapa.
Cordinate X,Y: Aquí le indicamos la parte especifica del mapa donde se visualizara la imagen.
URL: Este campo es opcional, si lo omitimos, al hacer click en un elemento del mapa estando en la sección de "Monitoring" nos mostrara los problemas    existentes en el dispositivo, si le colocamos una dirección en esta opción entonces al hacer click en el elemento nos llevara a la pagina que coloquemos  aquí.

Los campos se pueden modificar posteriormente.


Agregando conectores

En los mapas los conectores nos permiten representar un enlace directo entre un elemento y otro, cada elemento puede estar conectado a uno o mas dispositivos para ser representado. Vamos a crear un conector dando click en la opcion "Create conection", sus campos se describen a continuación:

Element1: Es el dispositivo origen. Elemento2: Es el dispositivo al que nos vamos a conectar. Link status indicator: Nos permite asociar el enlace con un Trigger de zabbix. Type: Cuenta con diferentes tipos de linea para poder insertar. Color: Sin comentarios xD

Hacemos click en "Save" y listo, el mapa automáticamente dibujara este enlace.

Items

Los items son los elementos que se encargan de monitorear, son instrucciones que podemos enviar a los agentes de zabbix para que las ejecuten.

Cada agente acepta determinadas instrucciónes que zabbix entiende y puede ejecutar sin ningún problema. Estos Items son genéricos y nos pueden servir para cualquier plataforma, dependiendo el template que seleccionemos, los templates son grupos de objetos que están diseñados para monitorear sistemas operativos windows o unix (bsd, linux, solaris).

Los templates que podemos seleccionar son:

MySQL_t : Permite monitorear exclusivamente servidores de bases de datos mysql.
SNMP_t : Permite procesar información de un servidor SNMP, este puede ser un sustituto al agente zabbix en determinados casos.
Standalone_t : Permite monitorear dispositivos que no tengan el agente zabbix instalado proporcionandonos información muy sencilla. Únicamente 
               nos  indica los servicios que tiene funcionando este dispositivo.
Unix_t : Objetos para monitorear casi cualquier unix, es importante saber que no todos los objetos están soportados por todas las plataformas, 
         pero si la mayoría.
Windows_t : Contiene objetos predefinidos para monitorear un equipo windows de tecnología NT.

A pesar de que contamos con templates potentes, es probable que necesitemos mas información de la que estos nos pueden proporcionar, por esta razón zabbix nos ofrece la posibilidad de crear objetos personalizados.

Es muy importante referirnos a la documentación de zabbix donde se describe detalladamente que hace cada item y que parámetros podemos pasarle (http://www.zabbix.com/manual/v1.1/config_items_supported.php).

Para crear un objeto vamos a la sección de "Items" en la pestaña de "Configuración" en el frontend de zabbix.

Aquí tenemos 2 opciones, la primera es crear un item para un host determinado o crearlo para todo el template. Si creamos un item para un host solo podremos utilizarlo en ese host y tendra que estar soportado por el agente o por el sistema operativo para funcionar. Si lo creamos en un template podremos aplicarlo a todos los host que estén usando ese template.

1.- Vamos a seleccionar en la opción de Grupo el elemento "Templates" de la lista desplegable.
2.- En host seleccionamos el template "Unix_t"
3.- Damos Click en "Create Item"

Los campos que podemos introducir para crear el Item son:

Descripción: Este campo es la cadena que se mostrara a la hora de ver el item mientras se monitorea, por lo que recomiendo colocar
             una descripción  clara sobre lo que hace el objeto.
Tipo: Seleccionaremos "Agente ZABBIX" aun que cuenta con mas opciones, la que utilizaremos generalmente es esta.
Key: Aqui colocaremos la instrucción que el agente zabbix ejecutara, si damos click en seleccionar nos mostrara una lista con posibles 
     instrucciones y su forma de emplearlas. Por ejemplo si colocamos: agent.ping entonces el agente pingueara cada X segundos al host.
Tipo de información: Súper importante, si el valor de retorno del objeto es un String, un Float o un Integer es aqui donde se lo indicamos. 
                       Si no colocamos correctamente el valor sera imposible graficarlo y lo único que ganaremos es que el server zabbix nos 
                       muestre el objeto como "Unsuported".
Usar Multiplicador: Nos permite multiplicar el valor retornado por otro numero, especialmente útil para los valores flotantes y sacar porcentajes.
Estado: Esto hace que los hosts afectados pasen automaticamente a ser monitoreados al terminar de crear el objeto.

Damos click en save y listo.

Si creamos el objeto dentro del template, todos los hosts afectados por el mismo empezaran a monitorear este nuevo valor en forma automática.

La instrucción system.run

Esta instrucción merece especial atención por que nos permite ejecutar periodicamente cualquier comando sobre el host monitoreado. Esto nos permite hacer practicamente lo que querramos siempre y cuando el agente zabbix tenga permisos para hacerlo.

Creamos un objeto y el a sección de key colocamos la instrucción "system.run[/ruta/script.sh]" voy a dejar que te imagines el poder que esto representa.

Para que lo anterior funcione es necesario descomentar en la configuración de cada agente zabbix en los hosts (zabbix_agentd.conf o zabbix_agent.conf dependiendo de si estamos usando inetd o no) la siguiente opción:

EnableRemoteCommands=1

Apache y SNMP

El modulo de SNMP en apache no viene por default, vamos a bajarlo de :

http://eplx.homeip.net/mod_apache_snmp/

o de source forge:
http://sourceforge.net/project/showfiles.php?group_id=123608

Una vez que contemos con el archivo mod_ap2_snmp_1.04.tar.gz vamos a descomprimirlo, compilarlo y usarlo:

# tar -xvzf mod_ap2_snmp_1.04.tar.gz
# cd mod_ap2_snmp_1.04
# ./install.sh

Si nuestro apache no esta ubicado en /usr/local/apache2 entonces sera necesario compilarlo de la siguiente forma:

# apachepath="/usr/local/apache2/"
# libs_net_snmp="/usr/local/lib"
# incs_net_snmp="/usr/local/include"
# apachepath/bin/apxs -a -i -c -L$libs_net_snmp -I$incs_net_snmp  mod_ap2_snmp.c -lnetsnmp -lcrypto -ldl -O2

Al definir las variables es importante utilizar las rutas correctas, podemos usar apxs o apxs2 para generar el modulo.

Una vez instalado el modulo necesitaremos editar el httpd.conf agregando estas lineas:

#snmp status config
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
ExtendedStatus On

Reiniciamos apache:

# /etc/init.d/apache2 restart

o si lo compilamos a mano:

# /usr/local/apache2/bin/apachectl restart

Listo, podemos consultar la información de SNMP que proporciona apache en la siguiente dirección:

http://localhost/server-status

Creando los scripts para procesador la información

Basandome en scripts de un ebuild de gentoo y otros que encontre en internet construi los siguientes scripts para procesar la información que esta en server-status.

Crearemos una carpeta en /etc/zabbix llamada apache_status

Dentro estaran todos los scripts para apache.

El primer script que crearemos sera: zabbix_apache.sh, su contenido es el siguiente:

#/bin/bash
#Script q saca la información que snmp proporciona para los archivos:
#zabbix_accecses.sh, zabbix_traffic.sh, zabbix_cpuusage.sh
wget http://127.0.0.1/server-status -O /etc/zabbix/apache_status/status >/dev/null 2>/dev/null
#Coloca en el archivo status2 la información procesada de apache que se utiliza para los archivos:
#zabbix_totalkb.sh, zabbix_totaluptime.sh, zabbix_requestps.sh, zabbix_bytespr.sh, zabbix_bussyworkers.sh, zabbix_idleworkers.sh
wget --quiet -O - http://localhost/server-status?auto > /etc/zabbix/apache_status/status2
echo 0

Esto generara 2 archivos, uno en html (status) y otro con solo los valores que nos interesan (status2)

Los demas scripts seran:

zabbix_acceses.sh

#Total de accesos a apache
cat /etc/zabbix/apache_status/status | awk '/Total accesses:/ {print $3}'

zabbix_bussyworkers.sh

#Apache Conexiones activas
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep BusyWorkers | cut -d " " -f 2

zabbix_bytespr.sh

#Apache Bytes por petición
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep BytesPerReq | cut -d " " -f 2

zabbix_bytesps.sh

#Apache Bytes por segundo
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep BytesPerSec | cut -d " " -f 2

zabbix_cpuusage.sh

#Apache Uso del CPU
#cat /etc/zabbix/apache_status/status | awk '/second - / {print $3}'
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep CPULoad: | cut -d " " -f 2

zabbix_idleworkers.sh

#Apache conexiones inactivas
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep IdleWorkers | cut -d " " -f 2

zabbix_requestps.sh

#Apache Total peticiones por segundo
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep ReqPerSec | cut -d " " -f 2

zabbix_totalkb.sh

#Apache Total Kb
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep kBytes | cut -d " " -f 3

zabbix_totaluptime.sh

#Tiempo que apache ha estado activo
cat /etc/zabbix/apache_status/status2 | head -n 9 | grep Uptime | cut -d " " -f 2

zabbix_traffic.sh

#Trafico de apache
cat /etc/zabbix/apache_status/status | awk '/Total Traffic:/ {print $3}'

Ahora ya que generamos estos archivos los hacemos accesibles para zabbix:

#chown -R zabbix:user /etc/zabbix/apache_status
#chmod -R +x /etc/zabbix/apache_status/*

Creando los items en zabbix para apache

Solo nos falta generar los items apropiados en el template, voy a describir unicamente las llaves o (keys) que usaremos al hacer los items:

Apache: Actualiza el estado de apache por SNMP	system:run[/etc/zabbix/apache_status/zabbix_apache.sh]
Apache: Bytes por petición	system.run[/etc/zabbix/apache_status/zabbix_bytespr.sh]
Apache: Bytes por segundo	system.run[/etc/zabbix/apache_status/zabbix_bytesps.sh]
Apache: Conexiones activas	system.run[/etc/zabbix/apache_status/zabbix_bussyworkers.sh]
Apache: Conexiones inactivas	system run[/etc/zabbix/apache_status/zabbix_idleworkers.sh]
Apache: Peticiones por segundo	system.run[/etc/zabbix/apache_status/zabbix_requestps.sh]
Apache: Total de KB por segundo	system.run[/etc/zabbix/apache_status/zabbix_totalkb.sh]
Apache: Uso del CPU por apache	system.run[/etc/zabbix/apache_status/zabbix_cpuusage.sh]
Apache: Veces que apache es accedido por hora	system.run[/etc/zabbix/apache_status/zabbix_acceses.sh]

Al agregar estos items al template todos los hosts asociados al template que tengan los scripts empezaran a monitorear los valores de apache.

Herramientas personales