Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| utilisateurs:draco31.fr:brouillon [Le 11/10/2009, 10:40] – draco31.fr | utilisateurs:draco31.fr:brouillon [Le 19/08/2012, 23:16] (Version actuelle) – draco31.fr | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Ceci est ma page BROUILLON !! ====== | + | ====== |
| + | ===== NUT & upsmon & upssched ===== | ||
| + | |||
| + | ==== Monitorer les événements de l'UPS avec upsmon ==== | ||
| + | |||
| + | === Configuration par défaut === | ||
| + | |||
| + | Par défaut, toutes les types d’événements sont associés aux directives **SYSLOG** (écriture dans ''/ | ||
| + | <note warning> | ||
| + | |||
| + | Le fichier **''/ | ||
| + | < | ||
| + | NOTIFYFLAG ONLINE | ||
| + | NOTIFYFLAG ONBATT | ||
| + | NOTIFYFLAG LOWBATT | ||
| + | NOTIFYFLAG FSD | ||
| + | NOTIFYFLAG COMMOK | ||
| + | NOTIFYFLAG COMMBAD | ||
| + | NOTIFYFLAG SHUTDOWN | ||
| + | NOTIFYFLAG REPLBATT | ||
| + | NOTIFYFLAG NOCOMM | ||
| + | NOTIFYFLAG NOPARENT | ||
| + | </ | ||
| + | |||
| + | Dans **''/ | ||
| + | < | ||
| + | Aug 19 21:49:34 localhost upsmon[7784]: | ||
| + | Aug 19 21:50:24 localhost upsmon[7786]: | ||
| + | Aug 19 21:50:34 localhost upsmon[7786]: | ||
| + | Aug 19 21:50:34 localhost upsmon[7786]: | ||
| + | Aug 19 21:50:39 localhost upsmon[7786]: | ||
| + | Aug 19 21:50:39 localhost upsmon[7786]: | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | === Utilisation d'un script via l' | ||
| + | |||
| + | Il est possible en plus ou la place des directives WALL et SYSLOG, d' | ||
| + | |||
| + | Le fichier de configuration **''/ | ||
| + | < | ||
| + | NOTIFYCMD / | ||
| + | </ | ||
| + | <note tip>Le chemin ''/ | ||
| + | |||
| + | Les options NOTIFYFAG concernée par ce traitement personnalisée doivent avoir la directive EXEC. Exemple pour '' | ||
| + | < | ||
| + | NOTIFYFLAG ONLINE | ||
| + | NOTIFYFLAG ONBATT | ||
| + | NOTIFYFLAG LOWBATT | ||
| + | NOTIFYFLAG FSD | ||
| + | NOTIFYFLAG COMMOK | ||
| + | NOTIFYFLAG COMMBAD | ||
| + | NOTIFYFLAG SHUTDOWN | ||
| + | NOTIFYFLAG REPLBATT | ||
| + | NOTIFYFLAG NOCOMM | ||
| + | NOTIFYFLAG NOPARENT | ||
| + | </ | ||
| + | |||
| + | FIXME Le script reçoit en argument le même libellé que ce qui est tracé dans ''/ | ||
| + | |||
| + | == Notification par mail == | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | ** Choix d'un MTA accessible en console ** | ||
| + | |||
| + | Plusieurs MTA (mail transfert agent) accessible en console sont disponibles dans les dépôts. Parmi ceux-ci on notera : | ||
| + | * [[:ssmtp]] : Très simple d' | ||
| + | * [[:mutt]] : plus évolué que '' | ||
| + | * [[: | ||
| + | |||
| + | ** Installation et configuration avec SSMTP ** | ||
| + | |||
| + | Exemple avec '' | ||
| + | * [[: | ||
| + | * [[: | ||
| + | root=mon-adresse-email@mon-fai.fr 25 | ||
| + | mailhub=smtp.fai.fr | ||
| + | hostname=ubuntu-desktop | ||
| + | FromLineOverride=YES | ||
| + | </ | ||
| + | * Depuis un [[: | ||
| + | Subject: Test envoi mail avec ssmtp | ||
| + | Test réussi ! Bravo ! | ||
| + | </ | ||
| + | |||
| + | ** Création du script de notification mail ** | ||
| + | |||
| + | < | ||
| + | Créer un fichier pour l' | ||
| + | Créer le script contenant les lignes : | ||
| + | < | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | FIXME : Non testé : à vérifier si ça marche bien :p | ||
| + | |||
| + | <note tips> | ||
| + | < | ||
| + | NOTIFYMSG ONLINE " | ||
| + | NOTIFYMSG ONBATT " | ||
| + | NOTIFYMSG LOWBATT " | ||
| + | NOTIFYMSG FSD " | ||
| + | NOTIFYMSG COMMOK " | ||
| + | NOTIFYMSG COMMBAD " | ||
| + | NOTIFYMSG SHUTDOWN " | ||
| + | NOTIFYMSG REPLBATT " | ||
| + | NOTIFYMSG NOCOMM " | ||
| + | NOTIFYMSG NOPARENT " | ||
| + | </ | ||
| + | |||
| + | === Utilisation de upssched === | ||
| + | |||
| + | Si vous souhaitez effectuer des actions différentes selon le type d' | ||
| + | |||
| + | fichier upsmon.conf (exemple) : | ||
| + | |||
| + | < | ||
| + | NOTIFYCMD / | ||
| + | |||
| + | NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG FSD SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG COMMOK SYSLOG+EXEC | ||
| + | NOTIFYFLAG COMMBAD SYSLOG+EXEC | ||
| + | NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC | ||
| + | NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC | ||
| + | </ | ||
| + | |||
| + | Créer le fichier de config / | ||
| + | < | ||
| + | # the script to be executed | ||
| + | CMDSCRIPT / | ||
| + | |||
| + | # mandatory fields that must be set before AT commands | ||
| + | PIPEFN / | ||
| + | LOCKFN / | ||
| + | |||
| + | # the timers, here 30 sec after the ONBATT (ups on battery) event | ||
| + | AT ONBATT * START-TIMER onbatt-timer 120 | ||
| + | |||
| + | # cancel the countdown is power is back | ||
| + | AT ONLINE * CANCEL-TIMER onbatt-timer | ||
| + | |||
| + | AT COMMBAD * EXECUTE commbad | ||
| + | AT COMMOK * EXECUTE commok | ||
| + | AT NOCOMM * EXECUTE nocomm | ||
| + | AT ONBATT * EXECUTE onbatt | ||
| + | AT LOWBATT * EXECUTE lowbatt | ||
| + | AT ONLINE * EXECUTE online | ||
| + | AT FSD * EXECUTE fsd | ||
| + | AT SHUTDOWN * EXECUTE shutdown | ||
| + | AT REPLBATT * EXECUTE replbatt | ||
| + | AT NOPARENT * EXECUTE noparent | ||
| + | </ | ||
| + | |||
| + | Créer le script / | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | logfile=/ | ||
| + | date=$(date +"%F %T") | ||
| + | |||
| + | case $1 in | ||
| + | commbad) | ||
| + | echo "$date : UPS communications failure." | ||
| + | ;; | ||
| + | commok) | ||
| + | echo "$date : UPS communications restored." | ||
| + | echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.enable 2>> $logfile | ||
| + | ;; | ||
| + | nocomm) | ||
| + | echo "$date : UPS communications cannot be established." | ||
| + | ;; | ||
| + | onbatt) | ||
| + | echo "$date : UPS is on battery. Trying to suspend." | ||
| + | echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.mute 120 2>> $logfile | ||
| + | sudo / | ||
| + | ;; | ||
| + | onbatt-timer) | ||
| + | echo "$date : UPS is on battery for more than 2 min. Trying to hibernate." | ||
| + | $echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.mute 300 2>> $logfile | ||
| + | sudo / | ||
| + | ;; | ||
| + | lowbatt) | ||
| + | echo "$date : UPS has a low battery. Current load=$(/ | ||
| + | echo "$date : | ||
| + | sleep 1 | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.enable 2>> $logfile | ||
| + | sudo / | ||
| + | ;; | ||
| + | online) | ||
| + | echo "$date : UPS on line. Shutdown aborted." | ||
| + | echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups shutdown.stop | ||
| + | sleep 1 | ||
| + | sudo / | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.enable 2> | ||
| + | ;; | ||
| + | fsd) | ||
| + | echo "$date : UPS is being forced-shutdown by the master." | ||
| + | echo "$date : | ||
| + | sleep 1 | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.mute 300 2>> $logfile | ||
| + | ;; | ||
| + | shutdown) | ||
| + | echo "$date : The system is being shutdown." | ||
| + | echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.mute 300 2>> $logfile | ||
| + | ;; | ||
| + | replbatt) | ||
| + | echo "$date : UPS battery is bad and needs to be replaced !!!" >> $logfile | ||
| + | echo "$date : | ||
| + | sudo /bin/upscmd -u login -p pwd localups beeper.enable 2>> $logfile | ||
| + | ;; | ||
| + | noparent) | ||
| + | echo "$date : The process that shuts down the system has died (shutdown impossible)." | ||
| + | sudo / | ||
| + | ;; | ||
| + | *) | ||
| + | echo "$date : $0 > Unrecognized command: $1" | tee -a $logfile 1>&2 | ||
| + | echo "$date : | ||
| + | ;; | ||
| + | esac | ||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | ====== Réduire le nombre d' | ||
| + | |||
| + | - Créer un dossier pour les log permanentes : sudo mkdir -p / | ||
| + | - Modifier le fichier de config de / | ||
| + | < | ||
| + | # see "man logrotate" | ||
| + | # rotate log files weekly | ||
| + | weekly | ||
| + | |||
| + | # keep 4 weeks worth of backlogs | ||
| + | rotate 4 | ||
| + | |||
| + | # create new (empty) log files after rotating old ones | ||
| + | create | ||
| + | |||
| + | # uncomment this if you want your log files compressed | ||
| + | #compress | ||
| + | |||
| + | olddir / | ||
| + | |||
| + | # packages drop log rotation information into this directory | ||
| + | include / | ||
| + | |||
| + | # no packages own wtmp, or btmp -- we'll rotate them here | ||
| + | / | ||
| + | missingok | ||
| + | monthly | ||
| + | create 0664 root utmp | ||
| + | rotate 1 | ||
| + | } | ||
| + | |||
| + | / | ||
| + | missingok | ||
| + | monthly | ||
| + | create 0660 root utmp | ||
| + | rotate 1 | ||
| + | } | ||
| + | |||
| + | # system-specific logs may be configured here | ||
| + | </ | ||
| + | - Modifier /etc/fstab pour charge /var/log sur un tmpfs : | ||
| + | < | ||
| + | # dossier en RAM (volatile) | ||
| + | tmpfs / | ||
| + | tmpfs | ||
| + | tmpfs | ||
| + | tmpfs / | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | === Mod easy === | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | - FIXME Créer un script dans / | ||
| + | < | ||
| + | case " | ||
| + | stop) | ||
| + | logrotate -f / | ||
| + | ;; | ||
| + | *) | ||
| + | #no-op | ||
| + | ;; | ||
| + | esac | ||
| + | exit 0 | ||
| + | </ | ||
| + | - Lier le script dans / | ||
| + | |||
| + | > Le mieux serait de faire un service qui écoute le bon événement et ferait la manip juste avant le démontage (S40umountfs). | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | === Mod avancé === | ||
| + | - FIXME Créer un script dans /etc/init.d qui fait : | ||
| + | * en stop : copie des fichiers de /var/log vers / | ||
| + | * en start (juste après mount), copier les log de /var/log/ à la suite des fichiers existant puis écrasement des fichiers de /var/log/ par ceux de / | ||
| + | |||
| + | <note warning> | ||
