viernes, 16 de junio de 2017

Instalar cliente xymon en PFSense

Hola a todos, les traigo esta sencilla guía, basada en un requerimiento que me fue pedido en el trabajo para la instalación de el cliente xymon (antiguo hobbit).
Los requisitos previos son sencillamente tener configurado adecuadamente el hostname en el servidor con la IP de administración, y obviamente que nuestro servidor xymon tenga acceso a ICMP, y cualquier puerto que se quiere monitorear externo (enlace web) aparte de por su puesto el puerto 1984 para el envío de los datos.

Version2.3.4-RELEASE (amd64)
built on Wed May 03 15:13:29 CDT 2017
FreeBSD 10.3-RELEASE-p19 

Para empezar, y sabiendo que PFSense es un BSD modificado basado en la distribución FreeBSD, primero debemos buscar el paquete, en los repositorios de la distribución el cual se puede ubicar en el siguiente listado.
Teniendo acceso al repositorio, buscamos el paquete que se desea instalar que en este caso es el xymon-client.
"recomiendo Usar ctrl + f en el navegador para ubicar el paquete"
En nuestro caso en el repositorio de FreeBSD está la versión 4.3.28, la cual es la que se procederá a instalar. habiéndolo ubicado le doy al navegador botón derecho sobre el nombre del paquete y le damos copiar enlace.

Una vez copiado en enlace lo pegamos para instalarlo de la siguiente forma:
pkg add http://pkg.freebsd.org/freebsd:10:x86:64/latest/All/xymon-client-4.3.28.txz

Esta parte no debería dar ningún error, pues este paquete "afortunadamente" no contiene ninguna dependencia adicional.
Una vez instalado crear (si ya no está creado) /etc/rc.conf.local
y agregar 
xymon_client_enable=YES


Ahora ejecutamos un comando para crear un enlace simbólico, dado que pfsense ejecuta sus servicios usando los archivos bash, difiriendo de esta manera con la forma estandart de FreeBSD


ln -s /usr/local/etc/rc.d/xymon-client /usr/local/etc/rc.d/xymon-client.sh

Resuelto el tema de el arrranque del servicio editamos la siguiente ruta
/usr/local/www/xymon/client/etc/xymonclient.cfg

Una vez abierto el archivo con nuestro editor de preferencia (por defecto es vi pero es posible instalar nano) modificamos solo La IP apuntando al servidor. Tambien si se desea y se tiene un dns interno puede usarse un nombre de host junto al dominio. En mi caso la dirección es "192.168.1.10". tambien debemos recordar que en el servidor xymon debe estar agregado el cliente con su nombre de host en el servidor para que pueda haber concordancia y no aparesca como "ghost report" de la pestaña xymond del mismo.

Les dejo una referencia al archivo de configuración:

# Environment settings for the Xymon client.
XYMSRV="192.168.1.10"          # IP address of the Xymon server
XYMSERVERS=""                   # IP of multiple Xymon servers. XYMSRV must be "0.0.0.0".
CONFIGCLASS="$SERVEROSTYPE"     # Default configuration class for logfiles

PATH="/bin:/usr/bin:/sbin:/usr/sbin:/etc"  # PATH setting for the client scripts.
SHELL="/bin/sh"                         # Shell to use when forking programs

# You normally don't need to modify anything below here
XYMONDPORT="1984"                   # Portnumber where xymond listens
XYMONHOME="$XYMONCLIENTHOME"       # Directory for the Xymon client files
XYMON="$XYMONHOME/bin/xymon"          # The Xymon client "xymon" utility
XYMONTMP="$XYMONHOME/tmp"             # Where we may store temporary files.
XYMONCLIENTLOGS="$XYMONHOME/logs"     # Where we store the client logfiles

# Options to logfetch, the xymon binary which examines log files for recent changes.
LOGFETCHOPTS=""

Hecho esto, guardamos y solo nos toca reiniciar el cliente xymon con el siguiente comando:
service xymon-client start

esto debería podernos mostrar la información de nuestro PFSense en nuestro servidor xymon.
No hay mas secretos con respecto a este tema 
Espero les sirva, y les sea útil.

jueves, 15 de junio de 2017

Limpiar Inodos linux al 100%

Buenas, acabo de tener un problema con un servidor en el cual el espacio en disco decía que estaba casi vacío, pero los inodos me indicaban que la partición estaba llena, impidiendo el arranque de servicios, que en mi caso particular era postgresql. Revisando me di cuanta que los problemas con inodos, generalmente son debido a problemas con archivos 0 bytes, lo cuales no tienen peso pero si ocupan espacio de otra forma.

Básicamente un inodo o i-nodo se utiliza para cada archivo en el sistema de archivos. Así quedarse sin inodos generalmente significa que se tiene una gran cantidad de archivos pequeños por ahí. Teniendo esto claro que la pregunta a hacerse es ¿que directorio tiene un gran número de archivos?

En este caso, el sistema de archivos donde tenía el problema era /var/ y para solucionar este problema usé los siguientes comandos:

Primero para evidenciar que los inodos del sistema se archivos se han llenado en la partición ejecutamos:

df -i

Lo cual nos da la siguiente información:


Filesystem     Inodes  IUsed  IFree IUse% Mounted on
rootfs         655360  60902 594458   10% /
udev            59464    250  59214    1% /dev
tmpfs           63478    187  63291    1% /run
/dev/xvda      655360  60902 594458   10% /
tmpfs           63478      3  63475    1% /run/lock
tmpfs           63478      2  63476    1% /run/shm
/dev/xvdc      655360 251084 404276   100% /var


Viendo esto, y sin saber donde diantres se están siendo usados los inodos usamos el siguiente comando para buscar  volcar una lista de todos los directorios del sistema de archivos con el prefijo del número de archivos (y subdirectorios) en ese directorio. Así, el directorio con el mayor número de archivos aparecerá al final:


find /var -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

la salida es la siguiente:


318 /var/lib/postgresql/9.1/main/base/27925
400 /var/chroot/usr/bin
1830 /var/lib/dpkg/info
202205 /var/chroot/var/lib/php5


cuando hagan un ls (sin comandos adicionales so pena de que tarden 10 veces mas para mostrar la información) se darán cuenta de que muchos archivos están con 0 bytes, convirtiéndose de esta manera en archivos parásitos.

Teniendo esto en cuenta buscamos de borrarlos de la siguiente forma


find /var/chroot/var/lib/php5/ -type f -size 0 -print0 | xargs -I{} -0 rm {}

va a tardar, dependiendo de cuantos archivos dispongan, que para llenar los inodos deben ser bastantes.Cuando terminen.

Vuelvan a usar el comando df -i y verán la mágia.


Filesystem     Inodes  IUsed  IFree IUse% Mounted on
rootfs         655360  60902 594458   10% /
udev            59464    250  59214    1% /dev
tmpfs           63478    187  63291    1% /run
/dev/xvda      655360  60902 594458   10% /
tmpfs           63478      3  63475    1% /run/lock
tmpfs           63478      2  63476    1% /run/shm
/dev/xvdc      655360 144847 510513   23% /var

Ahora pude arrancar el servicio y pude respirar tranquilo.

Con este método fácil y practico espero puedan lograr solucionar cualquier problemas de este tipo.

Saludos y gracias por visitar el blog.

Actualización 07/03/2019

tenia un problema con un servidor xenserver y este problema me ayudó, sin embargo al borrar los archivos en 0 todavía quedaban un montón con más de 0 bites y ocupaban el 30% de los inodos. Para limpiarlo ejecuté el siguiente comando:

find /var/log -type f -mtime +2 -print0 | xargs -I{} -0 rm {}

Espero les sirva