ResEl classic : plus de place sur la machine !
Rappel ! N'hésitez pas à regarder le manuel des commandes utilisées, à googler et À FAIRE TESTER PAR VOUS-MÊME.
Pré-requis :
- un compte la machine en question
Diagnostique
Icinga (icinga.resel.fr) se plaint : PROBLEM : Disk Space is CRITICAL
Host: Situs - Le reverse proxy admin
Address: 172.22.2.97
State: CRITICAL
/dev/vda1 value, 96.6603720505568, is above critical treshold 95 -----------
Allons voir sur la machine en question :
~ » ssh yoshi
gweghstee@yoshi:~$ ssh situs
gweghstee@situs's password:
gweghstee@situs:~$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 992M 0 992M 0% /dev
tmpfs 201M 21M 180M 11% /run
/dev/vda1 4,8G 4,4G 150M 97% /
tmpfs 1003M 48K 1003M 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1003M 0 1003M 0% /sys/fs/cgroup
tmpfs 180M 0 180M 0% /run/user/0
tmpfs 180M 0 180M 0% /run/user/1015
En effet, la partition /dev/vda1
est bien remplie. Cherchons un peu plus ce qui prend de la place. Par intuition, on peut aller voir du côté des logs.
gweghstee@situs:~$ cd /var/log
gweghstee@situs:/var/log$ sudo du -h .
[sudo] Mot de passe de gweghstee :
4,0K ./ntpstats
4,0K ./telegraf
164K ./munin
52K ./exim4
176K ./apt
14M ./installer/cdebconf
14M ./installer
12K ./fsck
296K ./nginx/svn.resel.fr
50M ./nginx/redmine.resel.fr
2,2M ./nginx/sandstorm.resel.fr
33M ./nginx/unifi.resel.fr
39M ./nginx/admin.resel.fr
9,9M ./nginx/icinga.resel.fr
14M ./nginx/wiki.resel.fr
35M ./nginx/kibana.resel.fr
16M ./nginx/stats.resel.fr
4,0K ./nginx/sat.lmonit.resel.fr
21M ./nginx/unifi-rennes.resel.fr
2,0M ./nginx/docker.resel.fr
25M ./nginx/proxmox.resel.fr
2,6M ./nginx/cacti.resel.fr
44M ./nginx/graph.resel.fr
120K ./nginx/chat.resel.fr
35M ./nginx/xxx.resel.fr
13M ./nginx/munin.resel.fr
20M ./nginx/backuppc.resel.fr
4,0K ./nginx/tv.monit.resel.fr
2,8M ./nginx/ara.resel.fr
23M ./nginx/observium.resel.fr
55M ./nginx/trac.resel.fr
2,1M ./nginx/backuppc-rennes.resel.fr
36M ./nginx/admin-dev.resel.fr
42M ./nginx/proxmox-rennes.resel.fr
1,9G ./nginx
220K ./letsencrypt
1,9G .
Les logs nginx prennent 1.9G, sur 4.8G de disque, c'est trop! Mais on remarque aussi que ce ne sont pas les sous-répertoires de nginx qui prennent de la place. Ce sont des fichiers directement dans nginx. Pour s'en convaincre:
gweghstee@situs:/var/log$ cd nginx
gweghstee@situs:/var/log/nginx$ ls -alhS
total 1,4G
-rw-r--r-- 1 root root 266M nov. 29 18:10 trac.resel.fr.access.log
-rw-r--r-- 1 root root 133M déc. 2 17:21 unifi.resel.fr.access.log
-rw-r--r-- 1 root root 109M nov. 28 11:41 error.log
-rw-r--r-- 1 root root 107M déc. 2 17:19 munin.resel.fr.access.log
-rw-r--r-- 1 root root 84M déc. 2 17:19 admin-dev.resel.fr.access.log
-rw-r--r-- 1 root root 78M déc. 2 17:20 observium.resel.fr.access.log
-rw-r--r-- 1 root root 70M déc. 2 17:21 unifi-rennes.resel.fr.access.log
-rw-r--r-- 1 root root 56M déc. 2 17:21 admin.resel.fr.access.log
-rw-r--r-- 1 root root 52M nov. 25 08:01 trac.resel.fr.errors.log
-rw-r--r-- 1 root root 49M déc. 2 17:20 proxmox.resel.fr.errors.log
-rw-r--r-- 1 root root 41M déc. 2 17:19 access.log
-rw-r--r-- 1 root root 38M déc. 2 17:21 icinga.resel.fr.access.log
-rw-r--r-- 1 root root 35M sept. 10 18:21 stats.resel.fr.errors.log
-rw-r--r-- 1 root root 26M déc. 2 17:19 xxx.resel.fr.access.log
-rw-r--r-- 1 root root 25M déc. 1 11:01 kibana.resel.fr.access.log
-rw-r--r-- 1 root root 25M oct. 21 19:15 graph.resel.fr.access.log
-rw-r--r-- 1 root root 24M déc. 2 17:21 backuppc.resel.fr.access.log
-rw-r--r-- 1 root root 22M sept. 10 18:21 stats.resel.fr.access.log
-rw-r--r-- 1 root root 22M déc. 2 17:19 ara.resel.fr.access.log
-rw-r--r-- 1 root root 21M déc. 2 17:13 sandstorm.resel.fr.access.log
-rw-r--r-- 1 root root 21M déc. 2 17:20 backuppc-rennes.resel.fr.access.log
.........
Des infos de logs sont générées en continu, ce qui est normal. Elles permettent de faciliter le diagnostique des problèmes, faire des stats ou même dans certains cas parce que c'est la loi qui le veut!
Pour éviter de saturer le disque, les fichiers de logs sont régulièrement compressés et archivé par logrotate. Faites un tour du côté de la doc pour en savoir plus...
Voyons à quoi ressemble la configuration de logrotate pour les logs ngninx :
gweghstee@situs:/var/log$ cat /etc/logrotate.d/nginx
/var/log/nginx/*/*.log {
monthly
size 50M
rotate 12
compress
delaycompress
missingok
notifempty
create 644 www-data www-data
}
Elle fonctionne bien pour les sous-répertoires de /var/log/nginx, mais pas pour les fichiers dans /var/log/nginx !Voyons si d'autres conf parlent de nginx :
gweghstee@situs:/var/log/nginx$cd /etc/logrotate.d
gweghstee@situs:/etc/logrotate.d$ grep -r "/var/log/nginx"
nginx:/var/log/nginx/*/*.log {
apparemment pas. À nous de le faire! :
gweghstee@situs:/etc/logrotate.d$ cat nginx
/var/log/nginx/*/*.log {
weekly
size 50M
rotate 12
compress
delaycompress
missingok
notifempty
create 644 www-data www-data
}
/var/log/nginx/*.log {
weekly
size 50M
rotate 12
compress
missingok
notifempty
olddir old_logs
create 644 www-data www-data
}
j'ai retiré le delaycompress qui conserve 1 rotation de log non compressé avant de compresser. J'ai ajouté un olddir, que je dois créer à la main la première fois pour y voir plus clair.
Application cette configuration :sudo logrotate /etc/logrotate.d/nginx --force
Vérification :
gweghstee@situs:/var/log$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 992M 0 992M 0% /dev
tmpfs 201M 21M 180M 11% /run
/dev/vda1 4,8G 4,4G 190M 96% /
tmpfs 1003M 48K 1003M 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1003M 0 1003M 0% /sys/fs/cgroup
tmpfs 180M 0 180M 0% /run/user/0
tmpfs 180M 0 180M 0% /run/user/1015
On a gagné 40M?????Après une petite recherche sur pourquoi df n'affiche pas la valeur correcte (https://serverfault.com/questions/232525/df-in-linux-not-showing-correct-free-space-after-file-removal ), on constate :
gweghstee@situs:/var/log$ sudo lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
nginx 731 root 2w REG 254,1 114241397 0 45 /var/log/nginx/error.log.1 (deleted)
nginx 731 root 4w REG 254,1 87698396 0 24983 /var/log/nginx/admin-dev.resel.fr.access.log.1 (deleted)
nginx 731 root 5w REG 254,1 834250 0 24984 /var/log/nginx/admin-dev.resel.fr.errors.log.1 (deleted)
nginx 731 root 6w REG 254,1 58028141 0 24985 /var/log/nginx/admin.resel.fr.access.log.1 (deleted)
nginx 731 root 7w REG 254,1 5585262 0 24986 /var/log/nginx/admin.resel.fr.errors.log.1 (deleted)
nginx 731 root 8w REG 254,1 22244736 0 24987 /var/log/nginx/ara.resel.fr.access.log.1 (deleted)
nginx 731 root 9w REG 254,1 11196 0 24988 /var/log/nginx/ara.resel.fr.errors.log.1 (deleted)
nginx 731 root 10w REG 254,1 21120957 0 24989 /var/log/nginx/backuppc-rennes.resel.fr.access.log.1 (deleted)
nginx 731 root 12w REG 254,1 24894507 0 24991 /var/log/nginx/backuppc.resel.fr.access.log.1 (deleted)
nginx 731 root 13w REG 254,1 13839 0 24992 /var/log/nginx/backuppc.resel.fr.errors.log.1 (deleted)
...
Du coup
gweghstee@situs:/var/log$ sudo service nginx reload
gweghstee@situs:/var/log$ sudo lsof +L1
Et enfin :
gweghstee@situs:/var/log$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 992M 0 992M 0% /dev
tmpfs 201M 21M 180M 11% /run
/dev/vda1 4,8G 2,9G 1,8G 63% /
tmpfs 1003M 48K 1003M 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1003M 0 1003M 0% /sys/fs/cgroup
tmpfs 180M 0 180M 0% /run/user/0
tmpfs 180M 0 180M 0% /run/user/1015
Bien sûr, je n'ai pas tout fait du premier coup, et c'est normal. Je vous ai épargné quelques commandes de tatonnement.