• [^] # Re: 2 choses

    Posté par . En réponse au message Cherche a envoyer un fichier en focntione d'un autre fichier. Évalué à 2.

    Au lieu de :mv /tmp/access.current /tmp/access.csv
    tu voulais dire : mv /tmp/access.current /tmp/access.precedent
    je crois

    Sinon, s'il s'agit du fichier qui est tourné quand il fait 5Go, faire un diff est pas super efficace.
    De mémoire, il y a un outil qui permet de faire un tail mais en partant de la position précédente, je retrouve pas le nom (pflogsumm fait ça mais c'est pour postfix).


    Je ferais un truc un peu différent, par exemple tourner les logs toutes les n minutes avec logrotate, et utiliser la fonction @script@ de logrotate pour envoyer le log sur Azure.


    Ou encore :

    Aussi, tu peux demander à Squid d'envoyer ses logs par syslog, et si tu utilises rsyslog, tu peux faire des noms de fichiers de log dynamiques.

    Par exemple cette conf rsyslog produit un fichier par jour, rangé dans un répertoire à la date du jour (je dois garder un an de logs, donc j'ai 365 fichiers de logs par équipement réseau) :

    # Store network logs in YEAR/MONTH/DAY/HOSTNAME.log files
    module(load="imudp")
    input(type="imudp" port="514")
    template (name="FileFromHostname" type="string" string="/var/log/network/%$year%/%$month%/%$day%/%HOSTNAME%.log")
    Input (type="imudp" port="514" ruleset="switchs")
    Ruleset (name="switchs") {
     Action (type="omfile" dynaFile="FileFromHostname")
     stop
    }
    

    Si tu change le template pour découper par minute, tu peux ensuite dans ton cron ne traiter que les fichiers les plus récents (conversion + envoi azure + suppression).

    Tu peux même demander à rsyslog de faire en plus un gros fichier (qui sera découpé par logrotate quand il devient trop gros) si tu as besoin de garder les logs sous la main en local, et des petits fichiers par minutes, qui seront supprimés par ton processus d'envoi sur Azure.

    (je sais pas si je suis hyper clair là en fait)


    Aussi, si les logs vont vers le journal de systemd (en direct ou via syslog), tu peux faire des extractions par date et par unit avec journalctl, ce qui semble assez pratique en l’occurrence.


    Voilà pour mes 2 cents, bon amusement ;)