Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Monitorización HDD y SSD con SMART en OPNsense con Scrutiny


Si ejecutas un servidor con más de un par de discos duros, probablemente ya estés familiarizado con S.M.A.R.T y el demonio smartd. Si no es así, se trata de un increíble proyecto de código abierto que se describe a continuación.



Introducción

    smartd es un demonio que monitoriza el sistema SMART (Self-Monitoring, Analysis and Reporting Technology) integrado en muchos discos duros ATA, IDE y SCSI-3. El propósito de SMART es monitorizar la fiabilidad del disco duro y predecir los fallos de la unidad, así como llevar a cabo diferentes tipos de autocomprobaciones de la unidad.

Estas autocomprobaciones S.M.A.R.T de los discos duros pueden ayudarle a detectar y sustituir los discos duros defectuosos antes de que provoquen una pérdida de datos permanente. Sin embargo, hay un par de problemas con smartd:



  • Hay más de cien atributos S.M.A.R.T, sin embargo smartd no diferencia entre métricas críticas e informativas
  • smartd no registra el historial de atributos S.M.A.R.T, por lo que puede ser difícil determinar si un atributo se está degradando lentamente con el tiempo.
  • Los umbrales de atributos S.M.A.R.T los establece el fabricante. En algunos casos, estos umbrales no están configurados o son tan altos que sólo se pueden utilizar para confirmar una unidad averiada, en lugar de detectar una unidad a punto de averiarse.
  • smartd es una herramienta de línea de comandos. Para los servidores sin cabeza una interfaz de usuario web sería más valiosa.



Scrutiny es una solución de monitorización y panel de control de la salud del disco duro, que combina las métricas S.M.A.R.T. proporcionadas por el fabricante con las tasas de fallos del mundo real.

Características

Scrutiny es una aplicación sencilla pero centrada, con un par de características básicas:

  • Panel de control con interfaz web, centrado en las métricas críticas.
  • Integración con 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 las tasas de fallo del mundo real
  • Seguimiento de la temperatura
  • Se suministra como una imagen Docker todo en uno (pero se puede instalar manualmente)
  • Alertas/notificaciones configurables a través de Webhooks
  • Pruebas y seguimiento del rendimiento del disco duro (en el futuro)

Notificaciones


Scrutiny admite el envío de notificaciones de fallo del dispositivo SMART a través de los siguientes servicios:
  • Script personalizado (datos proporcionados a través de variables de entorno)
  • Correo electrónico
  • Webhooks
  • Discord
  • Gotify
  • Hangouts
  • IFTTT
  • Join
  • Mattermost
  • ntfy
  • Pushbullet
  • Pushover
  • Slack
  • Teams
  • Telegram
  • Tulip


notify:
  urls:
    - "discord://token@webhookid"
    - "telegram://token@telegram?channels=channel-1[,channel-2,...]"
    - "pushover://shoutrrr:apiToken@userKey/?priority=1&devices=device1[,device2, ...]"
    - "slack://[botname@]token-a/token-b/token-c"
    - "smtp://username:password@host:port/?fromAddress=fromAddress&toAddresses=recipient1[,recipient2,...]"
    - "teams://token-a/token-b/token-c"
    - "gotify://gotify-host/token"
    - "pushbullet://api-token[/device/#channel/email]"
    - "ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3"
    - "mattermost://[username@]mattermost-host/token[/channel]"
    - "ntfy://username:password@host:port/topic"
    - "hangouts://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz"
    - "zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name"
    - "join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]"
    - "script:///file/path/on/disk"
    - "https://www.example.com/path"

Como instalar el colector Scrutiny en OPNsense

 Las versiones FreeBSD han sido añadidas a las nuevas versiones de Scrutiny, recuerda ir a buscar el último binario a la página de versiones en el siguiente paso.

Necesitarás configurar la WebUI y podrá acceder a ella desde OPNsense, podemos proceder a configurar el recolector en OPNsense.

En primer lugar, deberá iniciar sesión SSH en OPNsense o acceder a la consola por el método que prefiera. Deberemos crear una carpeta para almacenar nuestro recolector de escrutinio, descargarlo y hacer que el archivo sea ejecutable.


mkdir /conf/scrutiny/
cd /conf/scrutiny/

fetch https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-collector-metrics-freebsd-amd64
chmod +x scrutiny-collector-metrics-linux-arm64


Para que cuando el recolector envíe los datos a la WebUI de Scrutiny, añada un identificador de host, de modo que sepamos qué discos en Scrutiny son de qué hosts, necesitamos añadir un pequeño archivo yaml de configuración, para establecer el identificador de host. Para ello crearemos un archivo yaml usando vi e introduciremos el contenido a continuación /conf/scrutiny/collector.yaml. Recuerda cambiar el change-me por el host id que quieras.


version: 1

host:
  id: "change-me" 

Ahora tenemos el binario del recolector y la configuración yaml, sólo necesitamos configurar una acción de OPNsense que podamos llamar usando el cron job de OPNsense. Para agregar una acción necesitamos crear un archivo conf en la siguiente ubicación_

 /usr/local/opnsense/service/conf/actions.d/actions_scrutinyCollector.conf 


Con el siguiente contenido, puedes cambiar el api-endpoint a la url de su url web Scrutiny. Una vez que hayas guardado este archivo tendrá que volver a cargar configd para OPNsense haciendo 

service configd restart


## /usr/local/opnsense/service/conf/actions.d

[scrutinyCollector]

command:/conf/scrutiny/scrutiny-collector-metrics-freebsd-amd64 run --config /conf/scrutiny/collector.yaml --api-endpoint http://localhost:8080/

type:script_output

message:Running Scrutiny Collector

description:Scrutiny Collector 


Ahora simplemente entre en OPNsense WebUI y vaya a la sección cron SYSTEM: SETTINGS: CRON. A continuación, puede crear un cron para el recopilador. Normalmente, las personas ejecutan el recopilador Scrutiny una vez cada 24 horas. Hay un ejemplo de esto a continuación, donde se ejecutará 1 minuto después de la medianoche todos los días.


Ahora debería estar todo configurado y el recolector reportará los datos S.M.A.R.T a su Scrutiny WebUI diariamente. Si quieres forzar la ejecución del recolector puedes hacerlo ejecutando el siguiente comando, si todo va bien pronto verás los discos de OPNsense aparecer en la WebUI de Scrutiny.

/conf/scrutiny/scrutiny-collector-metrics-freebsd-amd64 run --config /conf/scrutiny/collector.yaml --api-endpoint http://localhost:8080


Para comprobar si el cron se ejecutó al día siguiente vaya a SYSTEM: LOG FILES: BACKEND y busque Running Scrutiny Collector, verá el registro de eventos de cuando se ejecutó.

Espero que alguien más encuentre esta guía útil, ya que monitorear sus unidades en OPNsense es una muy buena idea y Scrutiny es una buena manera de centralizar todo el monitoreo/reporte en un solo lugar. 

Webapp/API

Dado que la aplicación web está empaquetada como un binario independiente, no hay realmente ningún software que necesite instalar aparte de glibc, que ya está incluido en la mayoría de los sistemas operativos Linux.

Estructura de directorios

Ahora vamos a crear una estructura de directorios para contener los archivos y binarios de Scrutiny.

mkdir -p /opt/scrutiny/config
mkdir -p /opt/scrutiny/web
mkdir -p /opt/scrutiny/bin

Archivo de configuración

Si bien es posible ejecutar la webapp/api sin un archivo de configuración, los valores predeterminados están diseñados para su uso en un entorno de contenedor, por lo que será necesario anularlos. Así que lo primero que tendrás que hacer es crear un archivo de configuración que se parece a lo siguiente: 

# stored in /opt/scrutiny/config/scrutiny.yaml

version: 1

web:
  database:
    # The Scrutiny webapp will create a database for you, however the parent directory must exist.
    location: /opt/scrutiny/config/scrutiny.db
  src:
    frontend:
      # The path to the Scrutiny frontend files (js, css, images) must be specified.
      # We'll populate it with files in the next section
      path: /opt/scrutiny/web
  
  # if you're runnning influxdb on a different host (or using a cloud-provider) you'll need to update the host & port below. 
  # token, org, bucket are unnecessary for a new InfluxDB installation, as Scrutiny will automatically run the InfluxDB setup, 
  # and store the information in the config file. If you 're re-using an existing influxdb installation, you'll need to provide
  # the `token`
  influxdb:
    host: localhost
    port: 8086
#    token: 'my-token'
#    org: 'my-org'
#    bucket: 'bucket'

Descarga de archivos

A continuación, descargaremos el binario de la API de Scrutiny y los archivos frontend de la última versión de Github. Los archivos que necesita descargar se llaman

    scrutiny-web-linux-amd64 - guarda este archivo en /opt/scrutiny/bin

    scrutiny-web-frontend.tar.gz - guarda este archivo en /opt/scrutiny/web

Preparar Scrutiny

Ahora que hemos descargado los archivos necesarios, vamos a preparar el sistema de archivos:

# Let's make sure the Scrutiny webapp is executable.
chmod +x /opt/scrutiny/bin/scrutiny-web-linux-amd64

# Next, lets extract the frontend files.
# NOTE: after extraction, there **should not** be a `dist` subdirectory in `/opt/scrutiny/web` directory.
cd /opt/scrutiny/web
tar xvzf scrutiny-web-frontend.tar.gz --strip-components 1 -C .

# Cleanup
rm -rf scrutiny-web-frontend.tar.gz

Inicio de la aplicación web Scrutiny

Por último, iniciamos la aplicación web de Scrutiny:

/opt/scrutiny/bin/scrutiny-web-linux-amd64 start --config /opt/scrutiny/config/scrutiny.yaml

Por defecto, la aplicación web recibe tráfico en http://0.0.0.0:8080

Fuentes:

https://fingerlessgloves.me/2021/04/14/scrutiny-on-opnsense-smart-monitoring/

https://github.com/AnalogJ/scrutiny/blob/master/docs/INSTALL_PFSENSE.md


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.