{{tag>sysadmin linux syslog rsyslog}} ====== Les attributs des messages ====== Les attributs (properties) sont insensibles à la casse depuis les versions supérieures à la 3.17.0 Les properties peuvent être utilisées par: * Les **templates** * Les déclaration conditionnelles Pour une liste exhaustive, confère la documentation en ligne. ^ **msg** | La partie message du flux entrant fournit par le module input | ^ **rawmsg** | Le message brut fournit par le module d'entrée, utile pour le debug. | ^ **hostname** | Nom d’hôte de la machine émettant le message. | ^ **fromhost** | Nom de la machine transmettant le message. | ^ **fromhost-ip** | IP de la machine transmettant le message. | ^ **syslogtag** | TAG du message | ^ **programname** | partie statique du TAG syslog BSD | ^ **pri** | partie priorité du message non décodée | ^ **pri-text** | partie priorité du message en présentantion textuelle | ^ **iut** | InfoUnitType utile pour les backend de type LogAnalyzer | ^ **syslogfacility** | la catégorie du message sous forme numérique | ^ **syslogfacility-text** | catégorie sous forme textuelle | ^ **syslogseverity** | niveau de criticité du mesage sous forme numérique | ^ **syslogseverity-text** | criticité sous forme textuelle | ^ **timegenerated** | date de réception du message | ^ **timereported** | date indiquée par le message | ^ **inputname** | nom du module d'entrée ayant généré le message. | ===== Le replacer ===== Le **property replacer** est au centre du système de template de rsyslog. Les messages syslog ont un ensemble de champs (properties) bien définis. Chacun de ces champs peut être accédé et manipulé par le **property replacer**. ==== Accéder à une propriété ==== Les propriété sont utilisées par les templates, on accède à leur valeur en plaçant leur nom entre les caractères **%**, la syntaxe globale est la suivante: %property:fromChar:toChar:options% Avec: * **property**: le nom de la propriété a récupérer. * **fromChar**/**toChar** motifs de sélection d'une sous-chaîne au sein de la propriété. * **options** options de traitements sur la selection. === Sélection d'une sous-chaine avec fromChar/toChar === Dans l'exemple ci-dessus les sections **fromChar** et **toChar** permettent de sélectionner une sous chaîne dans la valeur de la propriété. Pour accéder aux 4 premiers caractères du message on procédera ainsi: %msg:1:4% Pour sélectionner une sous chaîne commençant au 5ieme caractère jusqu’à la fin du message: %msg:5:$% les expressions rationnelles sont également supportées. La section **fromChar** doit comporter le caractère **R** pour spécifier que les expression rationnelles sont utilisées. L'expression rationnelle est placée dans la **section toChar** et doit se terminée par **-end**. %msg:R:.*Sev:.\(.*\)\[.*-end% Dans la section **fromChar** il est possible de spécifier des paramètres: R,,,,match-number> ^ **** | **BRE** pour les expressions POSIX ou EPE pour les expressions étendues. | ^ **** | chiffre: 0 pour toute la chaîne, de 1 à 9 si plusieurs correspondances ont été trouvées. | ^ ** | Permet de spécifier un comportement en cas de non correspondance. Peut prendre les valeurs **DFLT** (retourne la chaine "**%%**%%NO MATCH%%**%%**", **BLANK**, **ZERO** ou **FIELD** pour retourner la totalité du champ. | Exemple syntaxique %msg:R,ERE,1,FIELD:for (vlan[0-9]\*):--end% Le concept de field (champ) peut également être utilisé pour l'extraction. Pour cela placer l'indicateur **F** dans la section **fromChar**. Les champs sont séparés par des délimiteurs (par défaut le caractère tabulation). Pour spécifier le délimiteur placer immédiatement après le caractère **F** une virgule suivie du **code décimal** du caractère **US-ASCII**. Le numéro du champs a extraire est a placer dans la section **toChar** L'exemple ci-dessous fournit la syntaxe pour extraire le troisième champ du message avec comme séparateur le point-virgule: %msg:F,59:3% Chaque séparateur introduit un champ différent, si l'on souhaite que plusieurs séparateurs consécutifs n'augmentent qu'une fois le numéros de champ, ajouter un caractère **+** après le code du délimiteur: %msg:F,59+:3% === Les options === Les options sur les propriétés sont insensibles à la casse, elles peuvent être cumulées séparées par des virgules. Ci-dessous quelques options disponibles: ^ **uppercase** | Convertir en majuscule | ^ **lowercase** | Convertir en minuscule | ^ **csv** | Convertir les champs résultat en cvs | ^ **drop-last-lf** | Supprime le dernier retour à la ligne | ^ **date-mysql** | Formater comme une date MySQL | ^ **date-rfc3164** | Formater comme une date RFC3164 | ^ **date-rfc3339** | Formater comme une date RFC3339 | ^ **escape-cc** | Redéfinir les caractères de contrôle/d'échappement | ^ **space-cc** | Remplace les caractères de contrôle par des espaces | ^ **drop-cc** | Supprimer les caractères de contrôle | ^ **secpath-drop** | Suppresion des caractère / dans le champ (sécurise dynafiles) | ^ **secpath-replace** | Remplace les caractère / dans le champ (sécurise dynafiles) | ===== Références ===== * http://www.rsyslog.com/doc/v7-stable/configuration/properties.html * http://www.rsyslog.com/doc/v7-stable/configuration/property_replacer.html * http://www.rsyslog.com/doc/v7-stable/configuration/nomatch.html