Añadir scripts y configuraciones para monitorización NFS, systemd y logrotate
This commit is contained in:
commit
3259caac2a
11
monitor_nfs.service
Normal file
11
monitor_nfs.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Servicio de monitoreo de unidad NFS
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/opt/scripts/monitor_nfs.sh
|
||||||
|
Restart=always
|
||||||
|
User=root
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
57
monitor_nfs.sh
Executable file
57
monitor_nfs.sh
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Configura el nombre del servicio y el archivo de log
|
||||||
|
SERVICE_NAME="deluged"
|
||||||
|
LOG_FILE="/var/log/monitor_nfs.log"
|
||||||
|
|
||||||
|
# Obtiene las rutas de montaje NFS desde /etc/fstab, excluyendo líneas comentadas
|
||||||
|
get_nfs_mount_points() {
|
||||||
|
grep -E '^[^#].*\s+nfs\s' /etc/fstab | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Verifica si todas las unidades NFS están montadas
|
||||||
|
check_all_nfs_mounts() {
|
||||||
|
local all_mounted=true
|
||||||
|
for mount_point in $(get_nfs_mount_points); do
|
||||||
|
if ! mount | grep -q "$mount_point"; then
|
||||||
|
all_mounted=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
$all_mounted && return 0 || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Registra mensajes en el archivo de log
|
||||||
|
log_message() {
|
||||||
|
local message="$1"
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Loop infinito para monitorear todas las unidades NFS
|
||||||
|
while true; do
|
||||||
|
if check_all_nfs_mounts; then
|
||||||
|
if ! systemctl is-active --quiet "$SERVICE_NAME"; then
|
||||||
|
log_message "Todas las unidades NFS están montadas. Intentando iniciar el servicio $SERVICE_NAME..."
|
||||||
|
if systemctl start "$SERVICE_NAME"; then
|
||||||
|
log_message "El servicio $SERVICE_NAME se ha iniciado correctamente."
|
||||||
|
else
|
||||||
|
log_message "Error al iniciar el servicio $SERVICE_NAME. Intentando detener el servicio..."
|
||||||
|
systemctl stop "$SERVICE_NAME"
|
||||||
|
log_message "El servicio $SERVICE_NAME se ha detenido después de un error al intentar iniciarlo."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_message "Todas las unidades NFS están montadas y el servicio $SERVICE_NAME ya está activo."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
||||||
|
log_message "Una o más unidades NFS no están montadas. Deteniendo el servicio $SERVICE_NAME..."
|
||||||
|
systemctl stop "$SERVICE_NAME"
|
||||||
|
log_message "El servicio $SERVICE_NAME se ha detenido."
|
||||||
|
else
|
||||||
|
log_message "Una o más unidades NFS no están montadas y el servicio $SERVICE_NAME ya está detenido."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Espera 10 segundos antes de verificar nuevamente
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
|
||||||
12
monitor_nfs_logrotate
Normal file
12
monitor_nfs_logrotate
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/var/log/monitor_nfs.log {
|
||||||
|
daily # Rota los logs a diario
|
||||||
|
rotate 7 # Conserva los últimos 7 archivos de log
|
||||||
|
compress # Comprime los archivos de log rotados
|
||||||
|
delaycompress # Retrasa la compresión hasta el siguiente ciclo
|
||||||
|
missingok # No muestra error si el archivo de log no existe
|
||||||
|
notifempty # No rota el archivo si está vacío
|
||||||
|
create 644 root root # Crea un nuevo archivo de log después de rotarlo con permisos específicos
|
||||||
|
postrotate
|
||||||
|
systemctl reload monitor_nfs.service > /dev/null 2>&1 || true
|
||||||
|
endscript
|
||||||
|
}
|
||||||
43
setup_monitor_nfs.sh
Executable file
43
setup_monitor_nfs.sh
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Configura las rutas
|
||||||
|
MONITOR_SCRIPT="monitor_nfs.sh"
|
||||||
|
SYSTEMD_SERVICE="monitor_nfs.service"
|
||||||
|
LOGROTATE_CONF="monitor_nfs_logrotate"
|
||||||
|
SYSTEMD_PATH="/etc/systemd/system"
|
||||||
|
LOGROTATE_PATH="/etc/logrotate.d"
|
||||||
|
SCRIPT_DEST="/opt/scripts"
|
||||||
|
|
||||||
|
# Comprueba que se ejecuta como root
|
||||||
|
if [[ $EUID -ne 0 ]]; then
|
||||||
|
echo "Este script debe ejecutarse como root."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copia el script de monitoreo al directorio de destino y otorga permisos de ejecución
|
||||||
|
echo "Copiando el script de monitoreo a $SCRIPT_DEST..."
|
||||||
|
mkdir -p "$SCRIPT_DEST"
|
||||||
|
cp "$MONITOR_SCRIPT" "$SCRIPT_DEST/$MONITOR_SCRIPT"
|
||||||
|
chmod +x "$SCRIPT_DEST/$MONITOR_SCRIPT"
|
||||||
|
|
||||||
|
# Copia el archivo de servicio systemd y recarga el daemon
|
||||||
|
echo "Instalando el servicio de systemd..."
|
||||||
|
cp "$SYSTEMD_SERVICE" "$SYSTEMD_PATH/$SYSTEMD_SERVICE"
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
# Copia el archivo de configuración de logrotate
|
||||||
|
echo "Configurando logrotate..."
|
||||||
|
cp "$LOGROTATE_CONF" "$LOGROTATE_PATH/monitor_nfs"
|
||||||
|
chmod 644 "$LOGROTATE_PATH/monitor_nfs"
|
||||||
|
|
||||||
|
# Habilita y arranca el servicio
|
||||||
|
echo "Habilitando y arrancando el servicio de monitoreo..."
|
||||||
|
systemctl enable monitor_nfs.service
|
||||||
|
systemctl start monitor_nfs.service
|
||||||
|
|
||||||
|
# Verifica el estado del servicio
|
||||||
|
echo "Estado del servicio monitor_nfs:"
|
||||||
|
systemctl status monitor_nfs.service
|
||||||
|
|
||||||
|
echo "Configuración completada con éxito."
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user