Scrutiny: 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!