Instalación del Sawmill + montar recurso compartido SSH (sshfs) en LXC

Sawmill es un paquete de software para el análisis estadístico y el informe de archivos de registro (logs), con filtrado contextual dinámico, zoom de datos «en vivo», personalización de la interfaz de usuario e informes calculados personalizados. Sawmill brinda soporte para aproximadamente 850 formatos de archivo de registro del servidor. Por lo que debido a su versatilidad cada sysadmins debería tenerlo instalado para revisar los logs de su infra. En este corto tutorial les mostrare como hacerlo.

Utilizare como herramienta de virtualización Proxmox. Crearemos un contenedor con Ubuntu o Debian como OS.

CPU: 1 core

RAM: 2GB (Sawmill recomienda 2 Gb de RAM por nucleo)

SWAP: 4Gb

HDD: 8GB (Si se necesita mas, luego se puede agregar)

Actualizamos nuestro CT:

apt update
apt upgrade

Descargamos la última versión del  Sawmill de aqui. Yo descargue la versión para debian.

La descompactamos donde más acomode, en mi caso en /opt

tar -xvf sawmill8.7.9.4_x64_linux-debian8.tar.gz

Nos creara la carpeta sawmill. Dentro encontraremos el binario ejecutable de sawmill y las carpetas:

  • LogAnalysisInfo (Web del Sawmill)
  • Extras ( Utilidades extras)

Podemos correr el binario para acceder a nuestro Sawmill

root@logs:~# cd /opt/sawmill/
root@logs:/opt/sawmill# ./sawmill

Ya podemos acceder a su web usando el siguiente link http://ip_sawmill:8988/

NOTA: El software Sawmill es de pago, por lo tanto, tendrán un periodo de 30 días de evaluación. Este Blog no da soporte a la piratería, así que no pidan como registrar el software.

Una vez allí configuramos nuestro usuario con derechos de administrador, el idioma, el correo y otras características mas. Ahora les mostrare gracias a Luis Felipe Domínguez Vega (AKA @H3R3T1C) como hacer que nuestro Sawmill inicié junto con nuestro CT. Para ello creamos un servicio llamado sawmill.

cd /etc/systemd/system/
nano sawmill.service

Dentro ponemos lo siguiente:

[Unit]
Description=Sawmill Log 
After=network-online.target
[Service]
#User=sawmill # Sawmill must have an user
Type=simple
ExecStart=/opt/sawmill/sawmill
TimeoutSec=30
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10

[Install]
WantedBy=network-online.target

Activamos e inciamos el servicio

systemctl enable sawmill
systemctl start sawmill

Una vez, ya arrancada nuestra web y con inicio automático solo nos queda un problema por superar. ¿Como hacer que Sawmill vea los logs de los sistemas que queremos analizar? En Sawmill se crean perfiles por cada conjunto de logs que queremos analizar. Tenemos que especificarle al Sawmill de donde leerá los registros (logs).

De las opciones que nos brinda, la que vi más razonable, segura y precisa es leer los registro desde el disco local. Las otras opciones constituyen más engorrosas ya que tendríamos que tener esos servicios en nuestra red y los registros centralizados en ellos. ¿Pero cómo hacer que Sawmill encuentre los logs en su propio disco sin tener que copiárselos?

La pregunta a esa interrogante está en el título de este tutorial. Sencillamente compartiremos con Sawmill los recursos (logs) que queremos analizar usando para ello SSHFS

Como el sawmill está instalado en un contendor de Proxmox y SSHFS usa FUSE entonces no es conveniente instalar SSHFS en el CT de Proxmox.  Usaremos SSHFS en nuestro Proxmox para montar los recursos (logs). Posteriormente a través de un Mount Point (punto de montaje) compartiremos este recurso con el CT del Sawmill. La siguiente figura es un esquema de lo que haremos.

 

En nuestro Proxmox 2 (el que aloja al sawmill) instalaremos SSHFS

apt install sshfs

Crearemos las carpetas qu contendran los logs.

cd /mnt
mkdir logs
cd /logs
mkdir squid mail

Montaremos los recursos.

sshfs -o allow_other root@ip_proxy:/var/log/squid3/ /mnt/logs/squid/
The authenticity of host 'ip_proxy (ip_proxy)' can't be established.
ECDSA key fingerprint is SHA256:rAs+biL5GkEf5lmrmePOry9XWYLoNUy6wEva4kgs6HM.
Are you sure you want to continue connecting (yes/no)? yes
root@10.122.193.3's password:       (establecer la clave root del proxy)

sshfs -o allow_other root@ip_mail:/var/log/ /mnt/logs/mail/
The authenticity of host 'ip_mail (ip_mail)' can't be established.
ECDSA key fingerprint is SHA256:raupX9Uls57p55cjuIUb0wMJMEFuRhgX0imwA189JXQ.
Are you sure you want to continue connecting (yes/no)? yes
root@10.122.193.225's password:     (establecer la clave root de mail)

Ya podemos ver nuestros logs montados en las carpetas /mnt/logs/squid y /mnt/logs/mail . Hagamos que el montaje sea automático cada vez que se inicie nuestro Proxmox.

nano /etc/fstab
###Agregamos lo siguiente
sshfs#root@ip_proxy:/var/log/squid3/ /mnt/logs/squid/
ssfhs#root@ip_mail:/var/log/ /mnt/logs/mail/

NOTA:Importantísimo hacer destacar que los CT a los cuales les estamos haciendo el montaje de los logs NO están situados en el mismo Proxmox donde se encuentra el sawmill. Al estar el punto de montaje en el fstab si el Proxmox 2 (el que tiene alojado el sawmill) en el arranque no ve los CT levantados (mail y proxy) en el otro Proxmox 1 entonces no levantara. Más adelante pensare en otra solución que no involucre el fstab para correr el sshfs.

Hagamos que la conexión sea sin usar la clave root de los CT. Desde nuestro Proxmox lanzamos el comando ssh-copy-id

root@pve1:~# ssh-copy-id root@ip_proxy
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ip_proxy's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@ip_proxy'"
and check to make sure that only the key(s) you wanted were added.

root@pve1:~# ssh-copy-id root@ip_mail
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ip_mail's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@ip_mail'"
and check to make sure that only the key(s) you wanted were added.

En el CT de Sawmill crearemos las carpetas que montaran los recursos. Yo cree las carpetas mail y squid en el siguiente camino /var/log ustedes pueden ubicarlas donde deseen. Ahora pararemos el CT de Sawmill para crearle los puntos de montaje.

nano /etc/pve/nodes/<nombre del nodo>/lxc/ct_id_sawmill.conf
###Agregamos lo siguiente

mp0: /mnt/logs/squid/,mp=/var/log/squid/
mp1: /mnt/logs/mail/,mp=/var/log/mail/

Iniciamos nuestro Sawmill y ya por fin dentro veremos los logs de los CT mail y squid .

Ahora crearemos el perfil para analizar los logs de Squid.

Los dejo con una imagen del Sawmill en accion.

¿De cuánta utilidad te ha parecido este contenido?

Alexander Rivas Alpizar

Administrador de Redes IDEAR Cienfuegos

View Comments

  • Sigo dándole vueltas en mi cabeza al asunto de los ct accediendo a un almacenamiento compartido entre varios para los logs. Otra variante que pienso tendrá mejor rendimiento de iops es que los ct accedan a la red de Ceph directamente como clientes, para esto habría que habilitarles una interfaz de red en la red pública de Ceph. Los ct no tendrán ni osd, ni mds, ni mgr, solo acceden a escribir y leer como clientes. Pienso que así es una solución mejor que con bindmounts. De esta manera tendrán la redundancia y disponibilidad de ceph y de una manera limpia. Hay que revisar los requerimientos de recursos y probarlo, yo no lo he hecho. Abrazos

  • Ahora vuelvo con lo de cephfs y me disculpo por volcar las ideas directo a los comentarios sin darles caldero antes...

    Lo primero es que no todos poseen el proxmox en modo hiperconvergente con ceph. Comprendo que esto demanda más recursos de hardware, así que es una solución que se limita más en cuanto a la cantidad de usuarios. No obstante, me gusta la idea de tener las cosas en Ceph por su redundancia y disponibilidad en el clúster.

    nodo=pve=host

    Si el almacenamiento que vamos a usar "radica en la red" es decir en Ceph en los hosts, da igual donde estan los ct y si algún host no está operativo, el cephfs está operativo y el host proxmox lo ve desde que se levanta el servicio de Ceph. Tengamos en cuenta que para este diseño se necesitan al menos 3 hosts Proxmox con Ceph. También es necesario crear un CephFS.

    Es ta secillo como crear un bindmount que radique en CephFS en uno cualquiera de los hosts:

    # mkdir /mnt/pve/ceph-fs/logs-para-sawmill

    Luego montamos esta carpeta como rw en el ct que escribe los logs (el contenedor deberá ser privileged o deberemos anteriormente asignar los permisos en un ct unprivileged), digamos que es el ct 100.

    # pct set 100 -mp1 /mnt/pve/ceph-fs/logs-para-sawmill,mp=/logs-para-sawmill

    Y en el ct que lee los logs lo montamos como solo lectura, este puede ser un ct unprivileged, digamos que es el 101:

    # pct set 101 -mp1 /mnt/pve/ceph-fs/logs-para-sawmill,mp=/logs-para-sawmill

    Esto no podremos hacerlo por la interfaz web, ya que por ella solo permite crear discos virtuales en el CephFS.

    Luego de reiniciar los ct, podrá ver el almacenamiento disponible. Desde mi punto de vista esta opción tiene la ventaja de:

    1. Los logs estan en Ceph, es decir en todo el clúster Ceph con la redundancia y disponibilidad que ello implica.
    2. No hay que tocar el fstab de un host
    3. Los ct comparten los logs, no se duplica la info y se escribe donde se debe el otro solo lee.

    Bueno, es para probar, espero este comentario sea útil, soy ajeno a Sawmill.

  • vuelvo, sobre autofs (https://packages.debian.org/buster/autofs) habría que probarlo, pero en teoría con este pudieran estar en el mismo host-pve todos los ct, pero... habría que declarar en el orden de inicio de los ct que el de sawmill sea último, para cuando arranque ya los otros estén operativos. con autofs no se monta hasta que no exista la necesidad del uso del mountpoint. se puede combinar con sshfs y usar el resto del tuto como se describe, solo agregar la parte de autofs. aquí les dejo un enlace http://www.tjansson.dk/2008/01/autofs-and-sshfs-the-perfect-couple/

  • buen tuto, otra opción para los que usen proxmox hiperconvergente es escribir en cephfs. ademas creo que hay un paquete llamado autofs. abrazo

  • buenas a todos soy nuevo usando sawmill y no se como darle la direccion pues tengo un servidor y tengo intalado el sawmill en otra pc y necesito darle la direccion del servidor para crear el perfi y que me genere desde ahy las bitacoras.

  • Hola.
    Instale Sawmill en windows y lo he usado durante años pero de repente dejo de funcionar, me gustaria verificar con ustedes que es lo que tengo que poner exactamente en la seccion de configuracion del navegador "No usar proxy para" la verdad no recuerdo.

  • Sawmill 8.8.0.1 Serial :
    enterprise-unlimited-perp-d514-cc25
    enterprise-unlimited-perp-607a-b2e7

  • bueno instale el sawmill perfectamente en mi pc de trabajo y lo levante la primer vez, luego cerre seccion y vuelvo a solicitar el sawmill desde la web y no levanta ... que me puede estar pasando, tengo la pc en debian 9.
    saludos, gracias.

  • Clave del producto Sawmill8.7.9.4
    enterprise-unlimited-perp-5373-0b04
    enterprise-unlimited-perp-8830-4411
    enterprise-unlimited-perp-2098-ad54
    enterprise-unlimited-perp-6488-87f3
    enterprise-unlimited-perp-3566-4b83

  • Muy buen articulo ya tengo el mio funcionando, para ubuntu no sirve la variante da problema por una libreria de mysql al menos en la version 18.04
    tengo 2 cosas que agregar es decir 2 cosas que pueden mejorar el articulo,
    incluir la carpeta destino a la hora de extraer con la opcion -C quedaria:
    tar -C /opt/ -xvf sawmill8.7.9.4_x64_linux-debian8.tar.gz
    Apagar y encender el CT(VMID 100) con los comandos desde la consola de proxmox
    pct stop 100
    Despues de agregar los ptos de montaje
    pct start 100

Share
Published by
Alexander Rivas Alpizar

Recent Posts

Alta disponibilidad de sus base de datos con Percona XtraDB Cluster en Kubernetes

Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…

1 año ago

Home automation (Parte 3) – ESPHome

Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…

2 años ago

Home automation (Parte 2) – Home Assistant

Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…

2 años ago

Home automation (Parte 1)

Desde hace varios meses vengo con la idea de automatizar la casa donde vivo. Poco…

2 años ago

Cocinando una imagen personalizada de OpenWRT

El artículo describe el uso para un caso particular de OpenWRT y la creación de…

2 años ago