Scrutiny: Docker

2 minuto(s) de lectura

Docker

Scrutiny es un WebUI para monitorear estado S.M.A.R.T. de nuestros medios de almacenamiento.

Hasta ahora para el monitoreado del servidor usaba el demonio smartd, pero no dispon铆a de metricas online.

Scrutiny es una aplicaci贸n simple pero de uso enfocado especialmente en los servidores, desarrollada en Go.

Entre otras, cuenta con las siguientes caracter铆sticas principales:

  • Panel de interfaz de usuario web: centrado en m茅tricas cr铆ticas
  • Integraci贸n smartd (sin reinventar la rueda)
  • Detecci贸n autom谩tica de todos los discos duros conectados
  • Seguimiento de m茅tricas S.M.A.R.T para tendencias hist贸ricas
  • Umbrales personalizados utilizando tasas de falla reales
  • Seguimiento de temperatura
  • Alertas / notificaciones configurables en el futuro a trav茅s de webhooks
  • Prueba y seguimiento del rendimiento del disco duro (en desarrollo)

Vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/scrutiny/config && \
cd $HOME/docker/scrutiny

Ejecutamos en la terminal la siguiente orden para identificar los HD鈥檚 que posteriormente anotaremos para editar el fichero docker-compose:

lsblk

Ahora vamos a crear el fichero de configuraci贸n docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/scrutiny/docker-compose.yml
version: "2.1"
services:
  scrutiny:
    image: ghcr.io/analogj/scrutiny:master-omnibus
    container_name: Scrutiny
    cap_add:
      - SYS_RAWIO
    volumes:
     - '~/docker/scrutiny/config:/config'
     - /run/udev:/run/udev:ro
    ports:
      - 8088:8080
    devices:
      - /dev/sda:/dev/sda
      - /dev/sdb:/dev/sdb
      - /dev/sdc:/dev/sdc
      - /dev/sdd:/dev/sdd
    restart: always
EOF

Vamos a repasar los principales par谩metros a modificar para adaptarlos a nuestro sistema y configuraci贸n especifica:

Par谩metro Funci贸n
~/docker/scrutiny/config:/config Ruta donde almacenaremos la configuraci贸n
/run/udev:/run/udev:ro Ruta donde consultaremos los metadatos del sistema
8088:8080 Puerto gesti贸n web 8088
/dev/sda:/dev/sda Monitorizar el HD sda, ejecutamos lsblk para listar HD鈥檚
/dev/sdb:/dev/sdb Monitorizar el HD sdb, ejecutamos lsblk para listar HD鈥檚
/dev/sdc:/dev/sdc Monitorizar el HD sdc, ejecutamos lsblk para listar HD鈥檚
/dev/sdd:/dev/sdd Monitorizar el HD sdd, ejecutamos lsblk para listar HD鈥檚
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio

Una vez configurado, lo levantamos para ser creado y ejecutado:

docker-compose up -d

A continuaci贸n entramos dentro del contenedor de imagen:

docker exec -it Scrutiny bash

Forzamos la ejecuci贸n del script que actualiza informaci贸n sobre discos duros:

scrutiny-collector-metrics run

Ejemplo de ejecuci贸n en mi sistema:

pi@overclock:~/docker/scrutiny$ docker exec -it Scrutiny bash
root@2688892d1188:/# scrutiny-collector-metrics run
2021/02/18 20:07:14 No configuration file found at /scrutiny/config/collector.yaml. Using Defaults.

 ___   ___  ____  __  __  ____  ____  _  _  _  _
/ __) / __)(  _ \(  )(  )(_  _)(_  _)( \( )( \/ )
\__ \( (__  )   / )(__)(   )(   _)(_  )  (  \  /
(___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
AnalogJ/scrutiny/metrics                                dev-0.3.5

INFO[0000] Verifying required tools                      type=metrics
INFO[0000] Executing command: smartctl --scan -j         type=metrics
{
  "json_format_version": [
    1,
    0
  ],
  "smartctl": {
    "version": [
      7,
      1
    ],

	[...]

      }
    ],
    "reset": false
  }
}
INFO[0006] Publishing smartctl results for 0x5000039a3bc01274  type=metrics
INFO[0006] Main: Completed                               type=metrics
root@2688892d1188:/# exit
exit
pi@overclock:~/docker/scrutiny$

Tras ello, podremos consultar el servicio, que en mi caso estar铆a disponible en la direcci贸n web http://192.168.1.90:8088

NOTA: Si queremos personalizar la notificaci贸n, editamos la configuraci贸n y reiniciamos el docker:

nano $HOME/docker/scrutiny/config/scrutiny.yaml && \
docker restart Scrutiny

Para poder probar que la notificaci贸n ha sido debidamente configurada, podemos lanzar la siguente consulta:

curl -X POST http://localhost:8088/api/health/notify

Y listo!