Aller au contenu
MAM78

HC2 : Envoi de Logs vers un serveur Syslog (Synology)

Recommended Posts

Envoyer vos logs dans le Centre des journaux

sur un serveur Syslog tel que de votre NAS & Routeur Synology

 

Voici un exemple de Logs collectées sur le NAS & Routeur Synology :

 

Nota : Pour les Routeurs Synology il est nécessaire de les équiper d'un disque dur pour pouvoir y stocker les logs

 

SysLog.thumb.png.58374e2ddad58819413ad2ca4a958bab.png

 

Cela permet notamment :

  • de consolider dans un même endroit tous types de messages (Erreur, Log de traitement, Arrêt/Marche de l'Alarme (en identifiant qui), debug, ...) et ceci même en provenance de plusieurs HC2
  • de bénéficier de leur archivage selon ses propres critères, contrairement à nos HC2 qui purgent automatiquement ses Logs dans les VD et Scènes sans que l'on puisse avoir la main dessus.
  • de consulter/analyser ces messages sur les NAS & Routeurs Synology, ou autre solution d'analyse de logs, avec de nombreux filtres/critères :
    • Périodes (de telle date/heure à telle date/heure)
    • Niveau de gravité (sévérité (voir ci-dessous)
    • Nom d'hôte (HostName)
    • Programme (Nom de Module Virtuel ou Scènes)
    • Catégorie (voir ci-dessous)
  • de générer des notifications (Mail) selon les niveaux de gravité (envoyé par votre NAS Synology)
  • d'exporter ces logs au format (HTML et CSV)
  • de transférer ces logs sur un serveur Syslog (cela peut être intéressant pour les professionnels qui souhaitent avoir une visibilité de ce qui se passe de grave sur les box de leur clients)
  • de limiter les écritures de logs sur notre cartes mémoire de notre HC2 et ainsi d'augmenter sa durée de vie
  • d'indiquer avec une variable globale ou locale pour nos VD/Scènes si leurs traces doivent être stocker sur le Centre de journaux (Syslog) ou affiché dans la log du VD/Scène. 

 

Ces Logs sont structurés et normalisés de la façon suivantes :

  • Date et Heure d'émission,
  • Nom de l'équipement ayant généré le log (hostname ou adresse IP). Intéressant, si par exemple vous avez plusieurs HC2.
  • Catégorie standardisé, information sur le processus qui a déclenché cette émission
    • 0 = kern : message provenant du noyau
    • 1 = user : messages utilisateur (générique)
    • 2 = mail : provient de la messagerie électronique
    • 3 = daemon : concerne un démon sans classification particulière (serveur DNS, NTP, etc.)
    • 4 = auth : concernent l'authentification
    • 5 = syslog : message du serveur syslogd lui-même
    • 6 = lpr : provient du sous-système d'impression
    • 7 = news : message du sous-système Usenet (notamment du serveur NNTP — Network News Transfer Protocole, ou protocole de transfert des nouvelles sur le réseau — gérant les forums de discussion) ;
    • 8 = uucp : messages du sous-système UUCP (Unix to Unix Copy Program, ou programme de copie d'Unix à Unix, un vieux protocole employé pour faire circuler entre autres des messages électroniques) ;
    • 9 = clock daemon
    • 10 = authpriv : concernent l'authentification
    • 11 = ftp : concerne le serveur FTP
    • 12 = NTP subsystem
    • 13 = log audit
      14 = log alert
    • 15 = cron : provient des services de planification de tâches, cron et and
    • 16 à 23 local0 à local7 : réservés pour les utilisations locales
  • le niveau de gravité (sévérité) standardisé
    • 0 = émerge : « Au secours ! » le système est probablement inutilisable
    • 1 = alert : vite, il y a péril en la demeure, des actions doivent être entreprises immédiatement
    • 2 = crit : les conditions sont critiques pour le système
    • 3 = err : erreur de fonctionnement
    • 4 = warn : Avertissement (une erreur peut intervenir si aucune action n'est prise)
    • 5 = notice : Événement normal méritant d'être signalé
    • 6 = info : message informatif
    • 7 = debug : message de débogage (mise au point)
  • un identifiant du processus ayant généré le log (dans notre cas ça peut être le nom de VD ou de la scène à l'origine de l'émission de la log)
  • un corps de message (libre à vous de mettre ce que vous voulez)

 

Pour pouvoir recevoir ces logs sur votre NAS ou Routeur, il convient préalablement :

  • d'installer le Package Centre des journaux disponible depuis le centre de paquets (faire une recherche du paquet avec le mot : centre) voir ci-dessous.

58b23b9a71476_PackageSyslog.png.36e5c13f77803e9fdaf7ac52c6c8c764.png

  • de paramétrer la localisation de la Destination de Stockage pour les Archives en (voir ci-dessous)
    • créant et en sélectionnant un dossier sur l'un des volumes de votre NAS ou Routeur Synology
    • configurant les règles d'archivage de vos logs

58b23e01d4c99_ParamSyslog.thumb.png.93e8807a32a2fad6e8b3a0f7c0006620.png

  • Créer et enregistrer une règle pour la réception des journaux avec les éléments suivants :
    • Choisissez un nom de règle (c'est à votre choix)
    • Définir le type de journal = Format BSD
    • Définir les protocole de transferts = UDP
    • Configurer le port = 514

58b23f3f8264c_RgleSyslog.thumb.png.d616d0d559834d7611697717cd763e09.png

  • Vous pouvez également (pas obligatoire) configurer des règles de notifications selon les critères de gravité et éventuellement quelques mots-clés :

58b241a5b9ca4_NotificationSyslog.thumb.png.9a50aeb86643564a0b21a9810e2503cf.png

  • Fin de la configuration de votre NAS

 

Maintenant sur votre HC2 :

  • A) Il faut :
    • 1) Charger le VD "Message Syslog" fourni ci-dessous, puis :
      • a) Mettre dans vos paramètres du VD :
        • l'IP de votre Syno dans "Adresse IP:"
        • le port UDP "514" dans "Port TCP:"
      • b) Ajouter et associer l'icône (fournie ci-dessous) à votre VD et associer également cette même icône au bouton du VD
    • 2) Charger la Scène "Message Syslog" fournie ci-dessous, puis :
      • a) modifier dans le code LUA de la scène (voir code ci-dessous) :
        • l'ID du VD (ici 179) que vous avez chargé ci-dessus
        • l'ID de la scène (ici 40) que vous venez de charger
      • b) Ajouter et associer l'icône (fournie ci-dessous) à votre Scène 
      • -----------------------
        -- User settings to be changed
        -----------------------
        local vd_id = 179 -- id number of the corresponding VD "Syslog Message"
        local sc_id = 40  -- id off the presence scene

         

    • 3) Charger le VD "Message Syslog Demo", puis :

a) modifier dans le code LUA du VD (voir ci-dessous) :

  • l'ID de la scène "Message Syslog" (ici 40) que vous avez chargé précédemment
  • -----------------------
    -- User settings to be changed
    -----------------------
    -- remplace the value 40 with the id of your Scene "Synology Message"
    local id_Scene_Syslog_Message = 40

     

  • 4) Tester le fonctionnement dans vos VD/Scènes en ajoutant la commande (le code) ci-dessous :
fibaro:startScene(id_Scene_Syslog_Message, {{sev = "warning"}, {orig= "Test Syslog Message"}, {mess = "Text for à warning"}})
  • 1) remplacer dans la commande ci-dessus les valeurs :
    • "warning", par le nom de la sévérité selon les valeurs (voir explication au début du Toto) : "emergency", "alert", "critical", "error", "warning", "notice", "info", "debug" 
    • "Test Syslog Message", par le nom du VD ou de la scène à partir duquel vous souhaitez envoyer votre message.
    • "Text for à warning", le message correspondant à l'événement que vous voulez faire apparaitre dans la Syslog

 

  • C) Eventuellement adapter le VD et la Scène selon vos besoins

 

Historiques des versions :

  • 2017-03-03 : V2.0 = Adaptation pour en faire une Scène qui peut être appelée depuis nos VD ou Scènes avec un passage de paramètres (ceux correspondants aux différentes parties de logs indiqués en début de Tuto)
  • 2017-02-26 : V1.0 = Version initiale

 

Evolutions à venir :

  • Corriger le problème lorsque 2 messages sont envoyés dans la même minutes. Il s'agit d'un problème lié au fait de l'usage d'un VD et d'une Scène puisqu'il n'est pas possible des s'assurer que les messages soit traités de manière séquentiel. Sauf si l'un de vous me trouve une solution. Pour le moment je ne vois pas :(
  • Fusionner/Intégrer le VD dans la Scène dès que j'aurais trouvé le moyen de remplacer la fonction Net.FUdpSocket() par d'autres commandes compatibles à la fois pour les scènes et les VD.
  • Je suis également preneur de toutes suggestions d'améliorations (fiabilisations, optimisations, ...)

 

Fichiers joints :

 

VD : VD Syslog_Message V0.1.vfib.json

Scène : Scene Syslog Synology V0.1.lua

VD Demo : VD Syslog_Message_Demo V0.1.vfib.json

 

SysLog.png.acb490f94e5695a7d824b7f049427640.png

 

Source format Lua : 

 

 

Modifié par MAM78
Création du Tuto
  • Upvote 5

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai créé un VD avec le code ci-dessus dans un bouton. Il semblerait que la commande Net.FUdpSocket() ne soit pas disponible depuis une scène ?

 

Vous auriez une idée pour en faire un scène ?

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai séparé tes 2 messages dans un nouveau topic de travail dédié à SYSLOG.

 

Dans une scène je ne sais pas, mais dans un VD j'utilise Net.FTcpSocket()

Attention à la fonction Net.FUdpSocket(), elle est bugguée, ou plutôt incomplète, car elle ne permet que d'écrire et ne permet pas de lire sur la socket UDP. J'en avais parlé sur le topic Onduleur Eaton, d'ailleurs tu y trouveras des exemples d'implémentation dans le code source LUA de la classe SNMP.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca c'est fait :74:

 

J'ai réussi à créer un VD qui écrit dans la Log de mon NAS Synology ;)

 

A vous de tester et faire vos commentaires.

 

Si vous avez une idée pour transposer ce VD en Scène je suis preneur de tous vos conseils.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super VD, merci :)

Je déplace dans la catégorie Tutos du coup !

Partager ce message


Lien à poster
Partager sur d’autres sites

merci @Lazer si au passage tu quelques conseils à me donner pour le transposer mon vd en scène puisque la fonction Net.FUdpSocket() n'est pas disponible dans une scène :(

Partager ce message


Lien à poster
Partager sur d’autres sites

Non je ne sais pas, si @Krikroff ou @Steven passent par là, ils pourront peut être te renseigner.

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78 

Super, lancé dans des VDs TOP. Encore bravo. et MERCIIIIIII

 

Bon, j'ai pas de Syno mais ça  donne envie ;-) 

Est-ce que tu pourrais partager le code pour les noobs de code comme moi stp ;-) Sauf s'il fait 3000 lignes tu va planter le forum ;-) 

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent boulot ! En plus cela permet du coup de gérer des push dynamique même, en utilisant l'alerte du Syno !

Reste à mettre en place et ajouter un peu partout dans les autres VD pour l'appeler.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Nico Si j'étais toi j'attendrais que la scène générique (notification center) complétée pour y ajouter cette nouvelle fonction afin qu'elle soit appelable depuis toutes nos scènes et VD.

 

Tu pourras remplacer toutes tes notifications (Mail, SMS, Push, Syslog, Voix sur sonos ou squezbox, ...) Ca serait cool ça, non ?

 

Mais pour ça il faut qu'un expert m'indique comment transposer mon VD en Scène :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

je me doutais de la réponse ;-) 

 

@Nico, j'attendrais aussi le Notification Center complet ;-) 

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite Aller spécialement pour toi et pour tous ceux qui ne veulent pas griller un n° d'identifiant dans le base HC2. Vous trouverez en fin de Tuto mon code au format LUA ;)

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

trop tard ;-) 

J'ai importé et lu le code ;-) 

merciiiiii 

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ceux qui n'ont pas de NAS Synology mais qui ont un Routeur Synology vous pouvez faire la même chose à condition d'avoir connecté un disque externe à votre routeur pour en faire un mini NAS Synology ;)

.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Nico pourrais-tu préciser ce que tu entends par gérer des push dynamiques ?

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Bah le Syno selon le niveau de criticité sait envoyé aussi des alertes, comme tu l'as mis plus haut, il pourra donc aussi envoyé des push pour les choses vraiment importantes.

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est bien ce que je pensais mais j'avais un doute, d'où ma question. Mais comme tu pourras le constater, j'ai modifier mon Tuto hier soir sur ce point.

 

Après quelques tests sur mon Syno, il s'avère que seuls les mails sont envoyés sur les journaux ajoutés.

 

Les Push semblent réservés aux logs générés par le NAS lui-même. Mais pour les recevoir sur son téléphone, il faut installer l'application DS finder.

 

N'ayant pas de fournisseurs de SMS, je n'ai pas pu vérifier pour les SMS.

 

Je n'ai pas fais de test également sur mon routeur Synology, mais comme l'interface est la même, je suppose que c'est la même chose.

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faudra que je test ce DS Finder. Il génère les alertes même application fermée ?

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est DS File non ?

Parce que le Finder, c'est juste le gestionnaire de fichier sur MacOS je pense.

Partager ce message


Lien à poster
Partager sur d’autres sites

Une seule et même scène pour toutes les notifs avec un fibaro:args() ! Mais quel bonheur :)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci @MAM78,

j'ai installé le VD (au passage, il faut mettre l'IP du Syno dans "Adresse IP:" et mettre le port UDP "514" dans "Port TCP:" du VD)

effectivement, le Syno envoie des notifications grâce au règles prédéfinies, par contre, je n'ai pas toujours les mêmes log qui remontes.

un débug:

[DEBUG] 15:37:06: <8>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 0 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <9>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 1 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <10>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 2 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <11>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 3 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <12>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 4 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <13>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 5 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <14>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 6 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 
[DEBUG] 15:37:06: <15>Feb 28 15:37:06 HC2 Syslog_Synology: Erreur 7 sur le device : Syslog Synology (virtual_device-1192) pièce = HC2 - System 

l'idée me plait, je suis ce tuto avec intérêt  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux préciser ce que tu entends par : je n'ai pas toujours les mêmes log qui remontes.

 

Précision, ce tuto explique comment faire pour remonter des messages dans un Syslog. La partie boucle n'est là que pour illustrer comment faire et comment paramétrer les 8 niveaux de criticité.

 

Pour le reste c'est à vous de jouer en attendant que je trouve le moyen de transformer mon VD en scène.

 

Je pourrais éventuellement dans l'immédiat faire une scène qui envoi les paramètres au VD et clic sur le bouton pour envoyer le message sur le syno.

Partager ce message


Lien à poster
Partager sur d’autres sites

 Oui, j'avais bien compris, ce que je veux dire c'est que si j'appuie quatre fois à 30 secondes d'intervalle j'ai pas toujours les huit qui remonte mais que trois ou quatre et après trois fois d'affilée les huit. 

 Mais L'idée est cool, je suis ça avec un grand intérêt. 

Partager ce message


Lien à poster
Partager sur d’autres sites

×