Tag Archives: Monitorización

Monitorizar Filer NetAPP con Zabbix

Vuelvo a la carga con Zabbix esta vez para explicaros como monitorizar una cabina de almacenamiento NetApp incluyendo el “autodiscover” de todos los volúmenes y luns que tenga. En este caso utilizaremos SNMP (Simple Network Management Protocol).

Añadir Plantilla NetApp

Antes de añadir el Host NetApp es necesario añadir una plantilla “Template” Zabbix que incluye: los Items a monitorizar del Filer NetApp, Triggers preconfigurados, Gráficos, … Este template netapp_FAS.xml.gz está disponible en la página de Templates de Zabbix.

Añadir una plantilla es muy senzillo simplemente hay que ir al menú Configuration -> Template -> Import y cargar la plantilla.

Añadir “Value Mappings”

El siguiente paso es añadir el mapeo de valores que devuelve el NetApp vía SNMP (MIB: Management Information Base). Con el “Value Mappings” se le informa a Zabbix que variables ofrece NetApp y a que corresponden. Por ejemplo, Zabbix ha de saber que la variable NetApp AutosupportStatus que ofrece el Filer vía SNMP puede estar asignada a cuatro valores diferentes y que si devuelve 1  es que el Autosupport de NetApp está ok, que si devuelve 2 es que hay algún error de smtp, etc …

Por suerte la información de los MIBs SNMP de NetApp también están disponibles en los foros de Zabbix.

El único inconveniente es que los “Value Mappings” hay que añadirlos a mano vía “Administration -> General -> Value Mapping”.

Configuration-of-value-mapping

Añadir Host NetApp en Zabbix

Cómo he explicado antes en este caso no es posible instalar ningún agente en el Filer NetApp así que la monitorización se hace vía SNMP. El host se añade des del menú Administration->Hosts y se rellena la IP del Filer y el Puerto SNMP.

Configuration-of-hosts

“Autodiscover” de Volúmenes y Luns

Hasta aquí monitorizaríamos el Filer pero no los tamaños de los Volúmenes y Luns que contiene. Para monitorizarlos también,  cómo en el caso de monitorización del Virtual Center de VMware los “autodiscovers” están desactivados y hay que activarlos.

Configuration-of-discovery-rules

Además de los Volúmenes y Luns la plantilla dispone de “autodiscover” de Raid Disks, Spare Disks  y Quotas.

Una vez activados los “autodiscovers” nos aparecerán los nuevos Items en unos minutos, es decir todos los Volúmenes y Luns del Filer y sus Triggers asociados por defecto.

Configuration-of-items

Monitorizar entorno de máquinas virtuales VMware en Zabbix

De nuevo un entrada dedicada a Zabbix, el Sistema de Monitorización creado por Alexei Vladishev.

En este caso explicaros cómo es posible monitorizar las màquinas virtuales de un entorno VMware sin necesidad de instalar agentes en todas las máquinas. La monitorización la haremos utilizando el vCenter (Virtual Center) de nuestro entorno VMware.

Este “autodiscover” de máquinas virtuales  está disponible a partir de la versión 2.2 de Zabbix y es necesario tener un usuario administrador del entorno VMware y un vCenter.

El “autodiscover” no sólo añadirá las máquinas virtuales a Zabbix, si no que también tendremos disponibles en nuestro Zabbix los servidores ESX  y los clusters de nuestro entorno de virtualización. En nomenclatura Zabbix nos aparecerán tres grupos de monitorización, Discover VMware Cluster, Discover VMware Hypervisors y Discover VMware VMs.

Instalar agente Zabbix en vCenter

El primer paso para hacer el “autodiscover” es tener instalado el agente de Zabbix en nuestro servidor Virtual Center. Una vez instalado ya podemos añadir el vCenter como un nuevo host a monitorizar en Zabbix.

En general la instalación del agente Zabbix és muy senzilla. En este caso mucho más al tratarse de un servidor Windows ya que en el proceso sólo hay que indicarle la IP y puerto del servidor Zabbix.

Añadir Host vCenter en Zabbix

  VirCenter_zabbix

Asignarle la plantilla de Zabbix “Template Virt VMware”

Zabbix_vmware_template

Configurar la Macro de acceso al vCerter vía SDK

En este paso hay que añadir la Url de acceso al SDK de virtual center además de un usuario y password con permisos de administrador.

Zabbix_Macros_vcenter

Revisar las “Discovery Rules”

Revisar que las tres reglas de búsqueda de Máquinas Virtuales, Clusters y Hypervisors están activas y guardar el nuevo Host.

zabbix_discovery_rules

Una vez guardado el nuevo Host vCenter empezará el proceso de “Discovery” en Zabbix y en un tiempo no muy largo, en mi caso no tardó más de 10 minutos, aparecerán en los tres grupos todas las máquinas virtuales, los ESX y los clusters que tengamos en el entorno virtual.

A tener en cuenta que en este caso Zabbix monitoriza lo que el servidor  vCenter le proporciona de las máquinas. En algunos casos puede ser suficiente, pero en otros no te quedará más remedio que añadir las máquinas manualmente previa instalación del agente correspondiente.

Migrando Zabbix de MySQL a PostgreSQL

No hace mucho me vi obligado a migrar a PostgreSQL la base de datos de Zabbix que tenía en MySQL y aunque Zabbix soporta las dos bases de datos la migración no fue sencilla. Cómo seguro que alguien más se puede ver en la situación aquí os dejo una guía de lo que a mí me funcionó.

Zabbix es un Sistema de Monitorización creado por Alexei Vladishev y está diseñado para monitorizar y registrar el estado de varios servicios de red, Servidores, Webs …

La decisión de migrar a PostgreSQL básicamente fue porque  la base de datos de Zabbix creció muy rápidamente y nos empezaba a dar problemas de rendimiento. Debido a que Zabbix era la única aplicación que usaba MySQL en nuestro entorno decidimos pasar a PostgreSQL de la que tenemos más experiencia.

Proceso de Migración

En primer lugar un repaso a las versiones de los sistemas implicados:

  • Linux CentOS 6.4
  • Zabbix 2.2
  • MySQL Percona 5.6
  • PostgreSQL 9.1.3

Para realizar la migración utilicé documentación de Zabbix.org donde explican como hacer un Upgrade de la versión de Zabbix 1.8 a 2.0 para después migrar de MySQL a PostgreSQL. En mi caso no me funcionó del todo el proceso de migración y por eso esta guía:

Exportar base de datos MySQL

En mi caso no me funcionó un dump en SQL si no que tuve que hacer un dump en formato CSV. Tampoco me era necesaria la información de histórico así que prescindí de las siguientes tablas:

    • zabbix.acknowledges
    • zabbix.alerts
    • zabbix.events
    • zabbix.history
    • zabbix.history_log
    • zabbix.history_str
    • zabbix.history_str_sync
    • zabbix.history_sync
    • zabbix.history_text
    • zabbix.history_uint
    • zabbix.history_uint_sync
    • zabbix.proxy_dhistory
    • zabbix.proxy_history
    • zabbix.trends
    • zabbix.trends_uint
    • zabbix.user_history

Export de todas las tablas de Zabbix en CSV.


> mkdir /tmp/zabbix/CSV; chown -R mysql: /var/tmp/zabbix
> for i in `find /var/lib/mysql/zabbix/ -type f | \
 sed 's/\....$//' | sort | uniq | sed 's#/var/lib/mysql/zabbix/##'`; do
 mysqldump -t -T/tmp/zabbix/CSV zabbix $i --fields-terminated-by=';' ;
done

Crear base de datos Zabbix en PostgreSQL

Para crear la base de datos Zabbix en PostgreSQL lo mejor es utilizar el schema.sql para PostgreSQL que viene en la distribución de Zabbix. Para que posteriormente la carga de datos no tenga problemas de restricciones eliminamos de schema.sql todos los ADD CONSTRAINT (los necesitaremos para “subir” restricciones después de la carga de datos).

> cat schema.sql | grep "ADD CONSTRAINT" > schema_constraint.sql</span>
> cat schema.sql | grep -v "ADD CONSTRAINT" > schema_modified.sql

Creamos el usuario Zabbix en el PostgreSQL y la base de datos:

> su - postgres -c 'PGPASSWORD=Zabbix22; yes $PGPASSWORD | createuser -P -SdR zabbix'
> echo 'CREATE DATABASE zabbix OWNER zabbix' | psql -U postgres
> export PGPASSWORD=Zabbix22
> psql -U zabbix zabbix < /usr/share/zabbix-postgresql/schema_modified.sql

Cargar los datos exportados de MySQL

Los datos exportados del MySQL en formato CSV los cargamos en PostgreSQL con el comando COPY que copia los datos de un fichero en una tabla.

Antes de hacer el COPY  primero transformar los ‘/r’ de retorno de carro ya que si no el proceso fallará ya que PostgreSQL no interpretará bien el fichero. Este es el error que devuelve PostgreSQL.


ERROR: literal carriage return found in data
HINT: Use "\r" to represent carriage return."

Para cada fichero el retorno de carro ‘\r’ se substituye por ^M con el comando sed:


# Para cada fichero CSV

> sed 's/^M/\\r/' alerts.txt > alerts2.txt

Cargar los datos a la base de datos Zabbix, cómo usuario postgres:


> su - postgres

postgres> psql zabbix
#Para cada fichero CSV
$  COPY alerts FROM 'tmp/zabbix/CSV/alerts.txt' DELIMITER ';' CSV;

Después de cargar los datos y si no hay ningún error podemos “levantar”  CONSTRAINTS

> psql -U zabbix zabbix < /usr/share/zabbix-postgresql/schema_constraint.sql

Si has llegado hasta aquí ya te debería de funcionar todo, aunque por seguridad yo cargué el fichero images.sql que también está disponible en la distribución de Zabbix.

Links de Ayuda