1 votes

Extraire les journaux apparaissant sur /usr/share/nginx

Nous avons un serveur syslog distant où nous stockons les journaux de toutes nos machines virtuelles. Tout fonctionne bien sauf que, sur certaines machines avec nginx, un fichier de logs contenant tout ce qui a été envoyé au serveur syslog distant est apparu dans le répertoire /usr/share/nginx .

J'ai vérifié la conf rsyslog ainsi que la conf nginx mais je n'arrive pas à trouver où est le problème. J'ai supprimé ce fichier journal sur /usr/share/nginx et après quelques jours, il réapparaît.

django-03 mario:~$ ls -larth /usr/share/nginx/
total 1,5G
drwxr-xr-x   2 root     root   23 dic  5  2018 html
drwxr-xr-x 150 root     root 4,0K abr 23 13:34 ..
drwxr-xr-x   3 root     root  148 sep  6 06:26 .
-rw-r--r--   1 www-data root 247M oct 17 09:31 syslog:server=someserver.vps:10514,tag=nginxerror
-rw-r--r--   1 www-data root 1,2G oct 17 09:33 syslog:server=someserver.vps:10514,tag=nginxaccess

Voici la configuration de rsyslog.

###############
#### RULES ####
###############                 
... Rest of the file ...
.
.
.

*.* @@someserver.vps:10514

Comme vous pouvez le voir, le rsyslog envoie tout à someserver.vps:10514 et fonctionne bien.

Voici la configuration de nginx, nous envoyons les journaux dans les deux sens au serveur distant et à la machine locale sur /var/log/syslog .

... Rest of the file ...
.
.
.
        ##
        # Logging Settings
        ##
        log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

        access_log /var/log/nginx/access.log vhosts;
        error_log /var/log/nginx/error.log;
        access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
        error_log syslog:server=someserver.vps:10514,tag=nginxerror;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

Comme vous pouvez le voir sur /usr/share/nginx/ apparaît le nom de someserver.vps avec tous les journaux. C'est comme 1.2G et nous ne savons pas pourquoi il apparaît là.

0 votes

Quelle version de nginx utilisez-vous ?

1voto

VictorMJ Points 108

Il semble que nginx n'ait pas pu résoudre l'adresse someserver.vps (nous avons eu des problèmes de DNS il y a quelques jours) et, comme vous l'avez dit, nginx a traité le syslog comme un nom de fichier littéral, et l'a créé dans le répertoire d'origine des démons.

Nous recevions des journaux sur le serveur syslog distant grâce à la configuration rsyslog. Et c'est ce qui me perturbait.

Merci beaucoup pour votre aide

0voto

Gerald Schneider Points 17588

Dans la documentation :

La journalisation vers syslog est disponible depuis la version 1.7.1.

Si votre version est plus ancienne, nginx traitera les directives syslog comme un nom de fichier littéral.

Dans ce cas, cette ligne :

access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;

configure nginx pour qu'il écrive un journal d'accès dans un fichier portant le nom de syslog:server=someserver.vps:10514,tag=nginxaccess . Il n'y a pas de chemin absolu, donc il est créé dans le répertoire personnel du démon.

0 votes

Mais, il se connecte correctement au serveur syslog distant someserver.vps:10514 créant un fichier nginxaccess avec le journal d'accès. Comment puis-je empêcher nginx de ne pas écrire sur /usr/share/nginx tout en envoyant les journaux au serveur distant ? Merci pour votre aide

0 votes

Je m'attendais à ce que votre nginx soit trop vieux et traite ceci comme un nom de fichier à la place. Si la journalisation à distance fonctionne et qu'aucune autre directive de journalisation n'est trouvée dans la configuration, j'envisagerais de créer un rapport de bogue avec nginx.

0 votes

Comme solution de contournement, vous pouvez remplacer les fichiers par un lien symbolique vers /dev/null.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X