Syslog
[Doc générale Syslog.pdf] / [Rsyslog.conf exemple de conf assez complète] / [Syslog-ng.conf exemple de conf assez complète]
[Présentation poussée et exemple pour syslog&syslog-ng]
Voici des scripts pour la maintenance d'un serveur syslog-ng : Make-Links-To-Current-Logs-forsyslog-Aulne.sh / Compress-Syslog-Logs-Aulne.sh
Chaque ligne est de la forme : Service.Priorité Destination
Service (ou facility) correspond au type de programme (Démon, Noyau,...) et doit être l’un de ces mots-clés : auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (identique à auth).
auth ou security Messages de sécurité et d'authentification. authpriv La même chose que précédemment, mais logs plus privés cron Messages de crontab et de at daemon Messages systémes générés par le daemon ftp Messages du serveur ftp kern Messages du noyau lpr Messages du serveur d'impression mail Messages du serveur de messagerie news Messages du serveur de news syslog Messages de syslog lui-même user Messages générés par le programme en cours d'un utilisateur uucp Messages UUCP + 8 autres, de LOCAL0 à LOCAL7, peuvent être personnalisés et utilisés par d'autre daemons, non standards.
Priorité représente le niveau de gravité du message et doit être l’un de ces mots clés : debug, info, notice, warning, warn (identique à warning), err, error (identique à err), crit, alert, emerg, panic (identique à emerg). ATTENTION : En indiquant un niveau, syslog enverra les messages de ce niveau et tous les messages des niveaux plus importants. Donc en
mettant « debug », syslog enverra tous les messages (de debug à panic).
Puis la liste de sévérité, classée de la moins grave à la plus grave. Tous les messages de sévérité plus graves sont inclus, ainsi si vous choisissez sévérité err, vous avez aussi
les messages crit, alert, et emerg.
7 debug Messages de debogage 6 info Messages d'information 5 notice Messages un peu plus importants que les messages info 4 warning ou warn Messages d'avertissement 3 err Messages d'erreur 2 crit Situation critique 1 alert Situation critique nécessitant une intervention immédiate 0 emerg ou panic Système inutilisable
Le signe ";" pour séparer plusieurs Services . Il est possible de mettre plusieurs services pour une même destination en utilisant le « ; » : Service1.Priorité1; Service2.Priorité2 Destination
Le signe « , » pour plusieurs « Services » avec une même « Priorité ».''' Il est possible d’indiquer plusieurs « Services » pour le même niveau de « Priorité » avec le signe « , ». La ligne suivante envoie dans le fichier « mail_news » les messages en provenance des « Services » « mail » et « new » dont la « Priorité » est supérieure ou égale à « info ». : mail,news.info /var/log/mail_news
Le signe « = » pour ne traiter que la « Priorité » indiquée. Il est possible de n’envoyer que les messages d’une seule « Priorité » (sans les « Priorités » de niveaux supérieures) avec le singe « = ». Exemple : mail.=err /var/log/mail.err
Le signe « * » pour traiter toutes les « Services ». La commande suivante permet d’envoyer les messages d’erreurs de toutes les « Services » dans le fichier « error »
- .error /var/log/error
Le signe « * » pour traiter toutes les « Priorités ». Le signe « * » permet d’indiquer que l’on souhaite toutes les « Priorités » (Le résultat est le même qu’en mettant « debug », mais c’est plus lisible). Exemple :
mail.* /var/log/mail
Le signe « * » pour envoyer des messages sur toutes les consoles ouvertes. La ligne suivante, permet d’envoyer tous les messages d’erreurs sur toutes les consoles ouvertes grâce au signe « * » placé en destination à la fin de la ligne :
- .alert *
Le signe « ! » pour exclure les niveaux supérieurs ou égaux à la « Priorité » indiquée. Le signe « ! » permet d’indiquer que l’on souhaite exclure le niveaux indiqué et tous les niveaux supérieurs à celui indiqué. La ligne suivante, permet d’envoyer dans le fichier « mail » tous les messages sauf ceux supérieurs ou égaux à la « Priorité » « warn » :
mail.*;mail.!warn /var/log/mail
La ligne suivante permet d’envoyer dans le fichier « mail » tous les messages supérieurs ou égaux à la « Priorité » « notice » et inférieure à la « Priorité » « crit » :
mail.notice;mail.!crit /var/log/mail
Le signe « - » pour améliorer les performances en écriture. Le signe « - » est utilisé devant les chemins de fichiers les moins critiques pour améliorer les performances en écriture au risque de perdre des données en cas de crash du système (pas de synchronisation des fichiers). Cette ligne enregistre tous les messages de la « Service » « mail » dans le fichier « mail » :
mail.* -/var/log/mail
Le signe « \ » pour écrire une instruction sur plusieurs lignes. La commande suivante écrite sur deux lignes grâce au signe « \ », permet d’envoyer tous les messages de mails ou de news dans le fichier « mail_news » : mail.*;\ news.* /var/log/mail_news
Envoyer les logs dans une console. La ligne suivante permet d’envoyer tous les logs dans la console « tty8 » (CTRL+ALT+F8) :
- .* /dev/tty8
Tags
# Définit le nom d'un template pour mettre les logs dans le répertoire associé au template $template df_admin_ed_application_message_acp_log,"/opt/data/log/syslog/enterprise-directory/ACP/%$YEAR%/%$MONTH%/%$DAY%/messages.log" # Les logs iront dans le template ?df_admin_ed_application_message_acp_log if $HOSTNAME == 'web-acp-1' and $syslogfacility-text == 'user' and ($syslogseverity-text == 'debug' or $syslogseverity-text == 'info' or $syslogseverity-text == 'notice') and ($msg contains 'Referential' or $msg contains 'Directory' or $msg contains 'Execute batch URL') then ?df_admin_ed_application_message_acp_log if ($HOSTNAME == 'web1-so' or $HOSTNAME == 'web2-so') and ($syslogtag contains 'Enterprise-Directory_Apache_Rewrite' or $syslogtag contains 'Enterprise-Directory_Apache' or $syslogtag contains 'Referential-CMD_Apache' or $syslogtag contains 'Referential-LMD_Apache' or $syslogtag contains 'Referential-CMD_Apache_Rewrite' or $syslogtag contains 'Referential- LMD_Apache_Rewrite') and not ($msg contains '172.25.3.156' or $msg contains '172.25.3.157' or $msg contains 'bytes of entropy' or $msg contains 'ERROR' or $syslogtag contains 'ERROR') then :ommysql:172.26.3.68,logs_web-apps-ED,rsyslog,XfNkHeb3 # drop tout ce qui ne contient pas le nom de la machine locale (ici syslog1-so), cela evite que le serveur syslog qui recoit des logs d'autres machines soient aussi stockés en local dans /var/log/messages en plus du fichier de logs spécifié dans les template :hostname, !contains, "syslog1-so" ~
Exemples
Le signe « ; » pour séparer plusieurs « Services »
Il est possible de mettre plusieurs services pour une même destination en utilisant le « ; » :
Service1.Priorité1; Service2.Priorité2 Destination
Le signe « , » pour plusieurs « Services » avec une même « Priorité »
Il est possible d’indiquer plusieurs « Services » pour le même niveau de « Priorité » avec le signe « , ». La ligne suivante envoie dans le fichier « mail_news » les messages en
provenance des « Services » « mail » et « new » dont la « Priorité » est supérieure ou égale à « info ». :
mail,news.info /var/log/mail_news
Le signe « = » pour ne traiter que la « Priorité » indiquée
Il est possible de n’envoyer que les messages d’une seule « Priorité » (sans les « Priorités » de niveaux supérieures) avec le singe « = ». Exemple :
mail.=err /var/log/mail.err
Le signe « * » pour traiter toutes les « Services »
La commande suivante permet d’envoyer les messages d’erreurs de toutes les « Services » dans le fichier « error »
*.error /var/log/error
Le signe « * » pour traiter toutes les « Priorités »
Le signe « * » permet d’indiquer que l’on souhaite toutes les « Priorités » (Le résultat est le même qu’en mettant « debug », mais c’est plus lisible). Exemple :
mail.* /var/log/mail
Le signe « * » pour envoyer des messages sur toutes les consoles ouvertes
La ligne suivante, permet d’envoyer tous les messages d’erreurs sur toutes les consoles ouvertes grâce au signe « * » placé en destination à la fin de la ligne :
*.alert *
Le signe « ! » pour exclure les niveaux supérieurs ou égaux à la « Priorité » indiquée
Le signe « ! » permet d’indiquer que l’on souhaite exclure le niveaux indiqué et tous les niveaux supérieurs à celui indiqué. La ligne suivante, permet d’envoyer dans le fichier
« mail » tous les messages sauf ceux supérieurs ou égaux à la « Priorité » « warn » :
mail.*;mail.!warn /var/log/mail
La ligne suivante permet d’envoyer dans le fichier « mail » tous les messages supérieurs ou égaux à la « Priorité » « notice » et inférieure à la « Priorité » « crit » :
mail.notice;mail.!crit /var/log/mail
Le signe « - » pour améliorer les performances en écriture
Le signe « - » est utilisé devant les chemins de fichiers les moins critiques pour améliorer les performances en écriture au risque de perdre des données en cas de crash du système
(pas de synchronisation des fichiers). Cette ligne enregistre tous les messages de la « Service » « mail » dans le fichier « mail » :
mail.* -/var/log/mail
Le signe « \ » pour écrire une instruction sur plusieurs lignes
La commande suivante écrite sur deux lignes grâce au signe « \ », permet d’envoyer tous les messages de mails ou de news dans le fichier « mail_news » :
mail.*;\
news.* /var/log/mail_news
La ligne suivante permet d’envoyer tous les logs dans la console « tty8 » (CTRL+ALT+F8) :
*.* /dev/tty8
# Les messages noyau sont tout d'abord stockés dans
# le fichier kernel, les messages critiques et au-dessus
# sont retransmis vers un autre hôte et vers
# la console
#
kern.* /var/adm/kernel
kern.crit @finlandia
kern.crit /dev/console
kern.info;kern.!err /var/adm/kernel-info
La première règle dirige tous les messages de facility kernel vers le fichier /var/adm/kernel.
La seconde déclaration dirige tous les messages noyau de priorité crit et au-dessus vers l'hôte distant finlandia. Ceci est utile, car si l'hôte se crashe et que le disque subit des
erreurs irréparables vous pourriez ne plus arriver à lire les messages stockés. S'ils sont aussi sur un hôte distant, vous pouvez encore essayer de trouver les raisons du crash.
La troisième règle dirige ces même messages vers la console courante, aussi l'utilisateur qui travaille sur la machine les recevra, aussi.
La quatrième ligne indique à syslogd de sauvegarder tous les messages noyau arrivant avec un priorité de info à warning dans le fichier /var/adm/kernel-info. Tout de err et au-dessus
est exclu.
# Tcp wrapper journalise selon mail.info, nous affichons
# toute la connexion sur tty12
#
mail.=info /dev/tty12
Ceci dirige tous les messages utilisant mail.info (dans les sources LOG_MAIL | LOG_INFO) vers /dev/tty12, la 12ème console. Par exemple le tcp wrapper tcpd(8) utilise ceci par défaut.
# Stocke tout ce qui concerne le courriel dans
# le fichier mail
#
mail.*;mail.!=info /var/adm/mail
Ce modèle correspond à tous les messages arrivant avec la facility mail, sauf ceux de priorité info. Ils seront stockés dans le fichier /var/adm/mail.
# Journalise tout message mail.info ou news.info dans info
#
mail,news.=info /var/adm/info
Ceci extraira tous les messages arrivant avec soit mail.info soit news.info et les stockera dans le fichier /var/adm/info.
# Journalise les messages info et notice dans
# le fichier messages
#
*.=info;*.=notice;\
mail.none /var/log/messages
Ceci laissera syslogd journaliser tous les messages qui arrivent avec la priorité soit info soit notice dans le fichier /var/log/messages, sauf les messages qui utilisent
la facility mail.