Pulizia file LOG Solarjessie [GUIDA]

Discussioni relative a software necessario per il monitoraggio e il Raspberry
Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Flane » 15/06/2017, 17:35

Dopo un pò di tempo vi potrebbe succedere che la cartella /var/log del vostro sistema cominci a crescere di dimensione in seguito all'accumularsi di vari log rilasciati dal sistema o da altri software che avete installato.

Logrotate inoltre viene periodicamente attivato tramite crontab e comprime i vari file di log e potreste trovare una situazione tipo questa:
log.jpg

con la presenza di molti file compressi.

L'accumularsi di molti file potrebbe creare anche qualche problemino vista la presenza di Ramlog, il software che si occupa di mantenere in ramdisk tutti i log. Infatti lo spazio che Ramlog destina al log di sistema non è infinito, ma ovviamente limitato per non occupare troppa ram del nostro Raspberry.

Con il comando

Codice: Seleziona tutto

df /var/log

è possibile verificare lo spazio disponibile ed utilizzato per /var/log

Un modo molto semplice per ripulire velocemente tutti i file .gz creati da logrotate e che contengono i log più vecchi, conservando però i log più recenti è eseguire il seguente comando da terminale:

Per ripulire la cartella /var/log/

Codice: Seleziona tutto

sudo find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete

Per ripulire anche la cartella /var/log/apache2/ dove sono contenuti i log del web server apache:

Codice: Seleziona tutto

sudo find /var/log/apache2/ -type f -regex '.*\.[0-9]+\.gz$' -delete

Allo stesso modo potete anche ripulire altre eventuali sottocartelle presenti in /var/log.

ATTENZIONE: non cancellate mai nessuna cartella all'interno di /var/log in quanto questo impedirà di funzionare al relativo software che utilizza la cartella cancellata. Cancellate eventualmente solo i file contenuti nelle varie cartelle.

PULIZIA AUTOMATICA
E anche possibile automatizzare questa procedura, creando uno script nella cartella comapps con i comandi:

Codice: Seleziona tutto

cd /var/www/comapps
nano clenalog.sh

ed incollare quanto segue:

Codice: Seleziona tutto

#!/bin/bash
#
# Raspberry SOLARJESSIE cleaning /var/log of logrotate files
#
# "cleanlog.sh" Rev. 1.0
#
# Copyright (C) 2017 Flavio Anesi <www.flanesi.it>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#
# Pulizia della cartella /var/log dei file compressi da logrotate
# ln -s /var/www/comapps/cleanlog.sh /usr/local/bin/cleanlog
#
# UTILIZZO:
# cleanlog 50         esegue la pulizia solo se lo spazio di log è pieno per più del 50%
# cleanlog         esegue la pulizia sempre
#
# è possibile automatizzare la procedura di pulizia inserendo in crontab la seguente riga:
#
# 02 00 1 * * /usr/local/bin/cleanlog 80 >/dev/null 2>&1
#
# in questo modo il primo di ogni mese alle ore 00:02 verrà eseguita la procedura di pulizia
# solo se la partizione di log è occupata per più dell'80%

SIZE_PERC_LIMIT="$1"

if [ -z "$SIZE_PERC_LIMIT" ]; then
   SIZE_PERC_LIMIT=0
fi
 
df -a -P /var/log | tr -s ' ' | cut -d' ' -f5 | grep '%' | cut -d% -f1 | while read value; do
if [ $value -ge $SIZE_PERC_LIMIT ]; then
   # clear
   echo "Pulizia cartella \\var\\log"
   sudo find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete
   echo "Pulizia cartella \\var\\log\\apache2"
   sudo find /var/log/apache2/ -type f -regex '.*\.[0-9]+\.gz$' -delete
   echo "Aggiornamento file RamLog"
   sudo ramlog flush
else
   echo "Pulizia non necessaria"
   echo "Percentuale /var/log utilizzata: $value %"
   echo "Percentuale limite per pulizia : $SIZE_PERC_LIMIT %"
fi
done


CTRL O + CTRL X per salvare ed uscire
Date i permessi in esecuzione a file:

Codice: Seleziona tutto

chmod +x cleanlog.sh

Create infine il link

Codice: Seleziona tutto

ln -s /var/www/comapps/cleanlog.sh /usr/local/bin/cleanlog

Ora eseguendo da terminale il comando cleanlog verrà effettuata la pulizia dei file di log.
E' anche possibile eseguire la pulizia solo se la cartella /var/log è piena per più di una certa percentuale (es. 80%) semplicemente eseguendo il comando e specificando la percentuale:

Codice: Seleziona tutto

cleanlog 80

E' anche possibile automatizzare la procedura inserendo uan riga in crontab come indicato nei commenti iniziali dello script.
Se volete modificare la programmazione di crontab, evidenzio un ottimo tool che vi aiuta nella scrittura della riga di crontab.

DISABILITARE ACCESS.LOG

Con Apache2 per limitare le continue scritture nel file access.log dei comandi GET quando si consultano le pagine web di 123solar e Metern (che possono portare ad una saturazione dello spazio di log in caso di prolungate consultazioni) è consigliabile disabilitare il log in access.log, mantenendo comunque il log di eventuali errori in error.log.

Per fare ciò è necessario accedere ai seguenti file:

Codice: Seleziona tutto

/etc/apache2/sites-available/default-ssl
/etc/apache2/sites-available/default

ed in entrambi commentare la riga con CustomLog :

Codice: Seleziona tutto

#CustomLog ${APACHE_LOG_DIR}/access.log combined

Salvate il file e riavviate il Web server Apache con il comando:

Codice: Seleziona tutto

systemctl restart apache2.service

Fonte: HOW TO EASILY DISABLE LOG IN APACHE


frdesimo
Messaggi: 43
Iscritto il: 12/10/2016, 16:27

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda frdesimo » 30/08/2017, 11:23

Ciao Flane,
ho verificato che la mia cartella /var/log risulta piena al 100% ed ho quindi seguito la procedura da te descritta ma la cartella risulta ancora piena al 100%, non vorrei commettere errori cancellando file di log a caso, hai qualche consiglio da darmi?
Grazie per l'aiuto,
Francesco

Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Flane » 30/08/2017, 13:21

Frdesimo, io ho in funzione il sistema da anni, e con la pulizia descritta sopra, ora ho solo il 5% occupato dello spazio disponibile (io ho un RPI 3 con 1GB di ram, ma fino a qualche settimana fà utilizzavo un B+ con 512MB e non avevo comunque problemi)

Codice: Seleziona tutto

root@raspberrypi:~# df /var/log
File system    1K-blocchi Usati Disponib. Uso% Montato su
tmpfs              474784 19764    455020   5% /var/log

Verifica con il comando

Codice: Seleziona tutto

df /var/log

lo spazio disponibile per /var/log, e nel caso fosse effettivamente pieno, controlla che cosa è che occupa una sacco di spazio in quella cartella.

Evidentemente devi avere qualcosa che genera un esagerazione di log e ti riempie la cartella.
Devi individuare la causa per risolvere il problema.

frdesimo
Messaggi: 43
Iscritto il: 12/10/2016, 16:27

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda frdesimo » 30/08/2017, 22:24

Grazie Flane,
questo è quello che mi restituisce il comando df /var/log
pi@raspberrypi:~ $ df /var/log
File system 1K-blocchi Usati Disponib. Uso% Montato su
tmpfs 474784 474784 0 100% /var/log
Ho notato che avevo un file di log molto grande di apache2 che ho eliminato ma stranamente questo non ha comportato un aumento dello spazio disponibile nella cartella /var/log che risulta sempre piena al 100%.


Another
Messaggi: 174
Iscritto il: 13/02/2017, 19:16

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Another » 06/05/2018, 23:47

io ho la solarjessie ma non avevo il file cleanlog.sh, ora l'ho creato

il log che arriva al 100% dello spazio previsto per me è il file access.log penso semplicemente perchè faccio spesso accesso a 123olar e a metern, non credo che ci siano problemi, solo un utilizzo frequente

sarebbe molto utile eseguire il cleanlog solo se la dimensione del file access.log supera una certa soglia, ad esempio 300MB, nel cron si può fare questa verifica? ad esempio 1 volta al mese controlla la dimensione e se è > 300MB lancia cleanlog.sh

Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Flane » 07/05/2018, 0:11

Si deve modificare il file cleanlog.sh in modo che prima esegua il controllo e che poi esegua di conseguenza la pulizia.

Poi si mette in cron l'esecuzione una volta al mese dello script.

Personalmente ho la Solarjessie in servizio da anni. Eseguo anch'io molti accessi ma non ho mai avuto il log pieno. Devi avere qualche altro problema.

Another
Messaggi: 174
Iscritto il: 13/02/2017, 19:16

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Another » 07/05/2018, 8:55

ci proverò

sul log ho controllato e non ci vedo cose strane, anche se non conosco cosa dovrebbe/non dovrebbe esserci

secondo me potrebbe essere dovuto al fatto che bene o male, tra pc e tablet, in background c'è spesso aperto il browser su 123solar o metern e quelli se non erro lanciano spesso richieste al server anche se non si fa nulla

Another
Messaggi: 174
Iscritto il: 13/02/2017, 19:16

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Another » 07/05/2018, 10:23

Ho modificato quello script cleanlog.sh in modo che faccia prima la verifica sulla dimensione di access.log ma le operazioni che fa non toccano quel file, che invece voglio resettare se troppo grande.

questi i tuoi comandi attuali nel cleanlog

Codice: Seleziona tutto

clear
      echo "Pulizia cartella \\var\\log"
      sudo find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete
      echo "Pulizia cartella \\var\\log\\apache2"
      sudo find /var/log/apache2/ -type f -regex '.*\.[0-9]+\.gz$' -delete
      echo "Aggiornamento file RamLog"
      sudo ramlog flush


per resettare il file access.log dovrei forse usare questi altri?

Codice: Seleziona tutto

sudo service ramlog stop
sudo rm /var/ram_log.tar.gz

Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Pulizia file LOG Solarjessie [GUIDA]

Messaggioda Flane » 07/05/2018, 11:24

Another stai andando completamente alla cieca senza un minimo di cognizione di causa di quello che fanno i vari comandi e se procedi in questo modo crei casini sui casini che già hai :roll: :shock:

Ho modificato lo script nel primo post ed è possibile far eseguire la pulizia solo se /var/log e piena più di una percentuale specificabile.
Lo script è commentato con tutte le istruzioni a riguardo.


Torna a “Software”

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti