Forum général.cherche-logiciel Recherche d'un outil pour centraliser les logs autres que système.

Posté par . Licence CC by-sa
Tags : aucun
1
16
avr.
2015

Bonjour,

Je suis actuellement en stage, et j'aurai besoin d'un peu d'aide pour trouver un outil qui pourrait correspondre aux besoins de mon entreprise.

Donc je vous donne le contexte : Nous avons un grand parc informatique composé de nombreux serveurs, et nous aimerions mettre en place un outil permettant de centraliser tous les logs de chaque serveurs, sur un serveur donné (un peu à l'image d'un serveur rsyslog). Cependant, nous aimerions obtenir plus que les logs systèmes.

Par exemple, nous avons certains scripts qui s'exécutent, et logs leurs sorties d'erreur dans un fichier de log local. Mais avec Rsyslog par exemple, comme il n'y a pas de "Facility" ou de "Severity" je n'arrive pas à les remonter ces fichiers.

En faite, j'aimerai savoir s'il est existe un outil permettant de centraliser tous les logs d'une machine (applicatifs, systèmes etc…) avec potentiellement une remonté d'alerte (par mail) par exemple en cas de log critique remonté, et si possible avec une interface web ^

Bon je demande un peut être beaucoup, mais si un tel outil existe, je serais le stagiaire le plus heureux du monde :)

Merci par avance !

  • # Graylog !!

    Posté par . Évalué à 2.

    Basé sur ElasticSearch (+ un peu de MongoDB), je pense que ça fera ton bonheur :
    https://www.graylog.org/

    • [^] # Re: Graylog !!

      Posté par . Évalué à 1.

      Merci pour ta réponse rapide !

      Après quelques recherches sur internet j'avais Graylog en tête également :)

      Avant de me lancer dans l'installation de celui-ci, j'aurai aimé avoir quelques retours d'expériences, est-il capable bien capable de gérer plus qu'uniquement les logs système par exemple ?

      Si tu l'as déjà utilisé, et bien je suis très curieux d'avoir tes retours, merci bien :)

      Cordialement,
      Alexandre_a

      • [^] # Re: Graylog !!

        Posté par . Évalué à 1.

        Oui, il sait gérer toutes sorte de flux et ceci combiné avec rsyslog ou Logstash comme shipper qui se chargera de transformer le flux au format GELF.

  • # Logstash

    Posté par (page perso) . Évalué à 4.

    autre piste, logstash fait tout ça, je sais pas si c'est mieux que graylog mais c'est bien.

    • [^] # Re: Logstash

      Posté par (page perso) . Évalué à 2.

      Je suis peut-être passé à côté de Graylog, mais j'ai l'ai pas trouvé plus convaincant que ELK (ElasticSearch/Logstash/Kibana).

      Peut-être à tord.

  • # usine à gaz pour remplacer rsyslog

    Posté par . Évalué à 3.

    Bonjour,

    Il faudra que l'on m'explique pourquoi il n'y a que des propositions qui sont pas du tout pensée pour faire de l'aggrégation de log, mais plus du traitement de logs.

    Alors ok, j'avais pas trop vu la partie "interface web" mais utiliser des usines à gaz comme les bases nosql etc… pour juste aggréger des logs et envoyer des mails…
    Honnêtement c'est beaucoup de travail pour très peu de ROI.

    rsyslog sait très bien le faire : module imfile de rsyslog : il va te lire ton fichier, lui attribuer la facility/priority kivabien
    http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html

    Tu envois tout ça ensuite à ton rsyslog central
    Sur ce dernier, tu écris une règle spécifique sur ton facility et le filtre kivabien pour détecter le "critical" et tu utilise par exemple le plugin de sortie de log en mail de rsyslog :
    http://www.rsyslog.com/doc/ommail.html

    Intérêt de cette solution
    - aucune nouvelle infra à gérer
    - des performances sans aucune mesure par rapport à du mongodb/Elastic search (dans mes tests, près de 10 fois plus d'évenement par secondes traités).
    - des protocoles comme le relp entre les différents serveurs, pour la fiabilité.

    Et si un jour tu veux tant que ça partir sur du elastic search pour utiliser kibana, tu peux toujours le plugger ton rsyslog central, il a un plugin (bon par contre comme je ne l'ai pas utilisé, visiblement tu vas devoir faire un template spécifique si tu veux des tags précis, peut être un poil moins pratique que logstash)

    • [^] # Re: usine à gaz pour remplacer rsyslog

      Posté par . Évalué à 4.

      je suis d'accord avec briaros007, rsyslog ou syslog-ng permettent deja de prendre les logs locaux, de definir des filtres, des reecritures et des destinations multiples y compris distantes.

      ainsi tu peux logger les messages en local, envoyer les plus critiques sur un serveur distant/central
      et sur le central filtrer par la source pour ranger ca proprement dans les dossiers/fichiers qui vont bien

      ca repond donc à la question "centraliser les logs"

      ensuite effectivement la solution logstash/kibana, etc ce sera plutot pour interroger ces logs faire des recherches dans la multitude de logs sur le point central.

  • # Merci pour vos conseils

    Posté par . Évalué à 2.

    Merci beaucoup pour toutes vos réponses, je ne connaissais pas les deux modules pour Rsyslog que mentionne briaeros007, je vais essayé de pencher là-dessus, pour l'interface web, je vais tenter de me tourner vers centreon-syslog. Il s'agit de l'outil que nous voulions utiliser à la base.

    Je vais essayer de vous faire un retour d'expérience à propos de cette solution, merci pour vos conseils avisés :)

    Cordialement Alexandre_a

  • # Quelques problèmes

    Posté par . Évalué à 1.

    Voilà, je reviens vers vous, avec un peu de retard, j'ai été pris sur un autre truc donc le rsyslog à été mis de côté.

    Quand j'essaye de faire comme vous me l'avez conseillés, j'ai quelques soucis.

    Par exemple j'ai 2 machines :

    MachineA et MachineB, MachineA = serveur rsyslog et MachineB est le "client" qui doit envoyer ses logs. Je tiens à noter que les logs systèmes remontent bien.

    Donc sur machineB j'ai fais un fichier dans /etc/rsyslog.d/ avec les lignes suivantes (pour un test):

    $ModLoad imfile # needs to be done just once

    File 1

    $InputFileName /var/log/apache/access.log
    $InputFileTag tag1:
    $InputFileStateFile stat-file1
    $InputFileSeverity error
    $InputFileFacility local1
    $InputRunFileMonitor

    (et dans le fichier /etc/rsyslog.conf j'ai bien la ligne permettant d'envoyer tout vers MachineA

    Le problème rien n'est remonter sur la machineA. pourtant j'ai un fichier dans /etc/rsyslog.d/ chargé de stocker dans la BDD tous les logs.

    Si vous avez une idée, je suis preneur ? Pensez vous pas qu'une solution "graphique" serait plus simple à mettre en place ? (et accessoirement à maintenir suite à la fin de mon stage).

    Merci par avance
    Alexandre_a

    • [^] # Re: Quelques problèmes

      Posté par . Évalué à 2.

      les ports des machines sont-ils ouverts ?

      je sais que pour syslog, c'est le port 514 en UDP
      qui doit etre ouvert en sortie sur l'emetteur, en entrée sur le recepteur.

      evidemment il faut aussi que le recepteur ecoute sur autre chose que 127.0.0.1 (donc sur 0.0.0.0 ou sur l'IP)
      enfin il faut dire à l'emetteur d'envoyer au recepteur, sinon il ne le fera pas de lui meme.

      • [^] # Re: Quelques problèmes

        Posté par . Évalué à 1.

        En faite, tous les logs systèmes (ceux de bases disponibles avec un rsyslog classique) de la machineB remontent bien sur la machineA. Donc c'est pas un problème de port, d'envoi de la machineB vers la machineA.

        En faite mon problème, c'est qu'actuellement je remonte seulement les logs systèmes. J'aimerai par exemple à l'avenir, sur certaines machines remonter les logs de tel ou tel fichier de la MachineB (client) vers la machineA (serveur).

        Mes Voisins du dessus, m'ont conseillé notamment d'utiliser le module imfile de rsyslog pour cela, mais visiblement j'arrive pas vraiment à le faire fonctionner, ou je dois m'être tromper quelque part :/

        Merci en tout cas d'avoir pris le temps de répondre à ma requête :)

        • [^] # Re: Quelques problèmes

          Posté par . Évalué à 2.

          le jeu des 7 differences

          ton exemple :

          $ModLoad imfile # needs to be done just once
          #    File 1
          $InputFileName /var/log/apache/access.log
          $InputFileTag tag1:
          $InputFileStateFile stat-file1
          $InputFileSeverity error
          $InputFileFacility local1
          $InputRunFileMonitor

          un exemple du net :

          $ModLoad imfile
          $InputFileName /data/mysql/error.log
          $InputFileTag mysql-error
          $InputFileStateFile stat-mysql-error
          $InputFileSeverity error
          $InputFileFacility local3
          $InputRunFileMonitor
          local3.* @@hostname:

          je penses qu'il te manque l'equivalent du local3.* @@serveur:port dans ta config
          du coup ton rsyslog ne sait pas quoi faire de ce fichier

          • [^] # Re: Quelques problèmes

            Posté par . Évalué à 1.

            En faite, dans mon fichier /etc/rsyslog.conf j'ai une ligne de ce type :

            *.* @IP_MarchineA
            

            Soit * . * pour envoyer tout vers MachineA (et 1 seul @ pour dire que c'est de l'UDP).

            J'ai essayé d'ajouter la ligne que tu me recommandes dans le fichier /etc/rsyslog.d/fichier_imfile.conf

            Mais rien à faire, le problème est le même. Ensuite, j'ai essayé de commenter ma ligne du fichier /etc/rsyslog.conf et voir si ça changeait quelque chose, mais maintenant plus rien était envoyé. (ce qui est logique)

            Du coup tu as une autre idée ? Moi je sèche un peu :/

            Merci en tout cas :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.