Transport et agrégation de journaux à grande échelle

14

Comment analysez-vous les fichiers journaux des machines UNIX / Linux? Nous exécutons plusieurs centaines de serveurs qui génèrent tous leurs propres fichiers journaux, soit directement, soit via syslog. Je cherche une solution décente pour les agréger et sélectionner les événements importants. Ce problème se décompose en 3 composants:

1) Transport de messages

La méthode classique consiste à utiliser syslog pour consigner les messages sur un hôte distant. Cela fonctionne bien pour les applications qui se connectent à syslog mais moins utile pour les applications qui écrivent dans un fichier local. Les solutions pour cela peuvent inclure la connexion du journal des applications à un FIFO connecté à un programme pour envoyer le message à l'aide de syslog, ou en écrivant quelque chose qui accueillera les fichiers locaux et enverra la sortie à l'hôte syslog central. Cependant, si nous nous donnons la peine d'écrire des outils pour envoyer des messages dans syslog, serait-il préférable de remplacer le tout par quelque chose comme Scribe de Facebook qui offre plus de flexibilité et de fiabilité que syslog?

2) Agrégation de messages

Les entrées de journal semblent appartenir à l'un des deux types: par hôte et par service. Les messages par hôte sont ceux qui se produisent sur une machine; pensez aux pannes de disque ou aux connexions suspectes. Les messages par service se produisent sur la plupart ou la totalité des hôtes exécutant un service. Par exemple, nous voulons savoir quand Apache trouve une erreur SSI mais nous ne voulons pas la même erreur de 100 machines. Dans tous les cas, nous ne voulons voir qu'un seul de chaque type de message: nous ne voulons pas 10 messages indiquant que le même disque est en panne, et nous ne voulons pas de message chaque fois qu'un SSI cassé est atteint.

Une approche pour résoudre ce problème consiste à regrouper plusieurs messages du même type en un sur chaque hôte, à envoyer les messages à un serveur central, puis à regrouper les messages du même type en un événement global. SER peut le faire, mais il est difficile à utiliser. Même après quelques jours de tripotage, je n'avais que des agrégations rudimentaires et je devais constamment rechercher la logique utilisée par SER pour corréler les événements. C'est un truc puissant mais délicat: j'ai besoin de quelque chose que mes collègues peuvent ramasser et utiliser dans les plus brefs délais. Les règles SER ne répondent pas à cette exigence.

3) Génération d'alertes

Comment dire à nos administrateurs quand quelque chose d'intéressant se produit? Envoyer la boîte de réception du groupe? Injecter dans Nagios?

Alors, comment résolvez-vous ce problème? Je n'attends pas de réponse sur une assiette; Je peux travailler moi-même sur les détails, mais une discussion de haut niveau sur ce qui est sûrement un problème commun serait formidable. Pour le moment, nous utilisons un méli-mélo de tâches cron, syslog et qui sait quoi d'autre pour trouver des événements. Ce n'est pas extensible, maintenable ou flexible et en tant que tel, nous manquons beaucoup de choses que nous ne devrions pas.

Mise à jour: nous utilisons déjà Nagios pour la surveillance, ce qui est idéal pour les hôtes / services de test / etc détectés, mais moins utile pour supprimer les fichiers journaux. Je sais qu'il existe des plugins de journalisation pour Nagios, mais je suis intéressé par quelque chose de plus évolutif et hiérarchique que les alertes par hôte.

Markdrayton
la source

Réponses:

5

J'ai utilisé trois systèmes différents pour centraliser les journaux:

  1. Transfert Syslog / syslog-ng vers un hôte
  2. Zenoss pour agréger et alerter les événements
  3. Splunk pour agrégation de journaux et recherche

Pour # 3, j'utilise généralement syslog-ng pour transférer les messages de chaque hôte directement dans Splunk. Il peut également analyser directement les fichiers journaux, mais cela peut être un peu pénible.

Splunk est assez génial pour rechercher et classer vos journaux. Je n'ai pas utilisé splunk pour les alertes de journal, mais je pense que c'est possible.

Gary Richardson
la source
+1 pour Splunk. Vous pouvez demander à Splunk de déclencher des scripts externes lorsque certains événements sont détectés; soit en envoyant un e-mail ou une interruption SNMP.
Murali Suriar
2

Vous pouvez jeter un œil à OSSEC, un HIDS open source complet, il analyse les journaux et peut déclencher des actions ou envoyer des e-mails sur les alertes. Les alertes sont déclenchées par un ensemble de règles simples basées sur XML, de nombreuses règles prédéfinies pour différents formats de journaux sont incluses et vous pouvez ajouter vos propres règles

http://www.ossec.net/

Guillaume
la source
1

Jetez un oeil à Octopussy . Il est entièrement personnalisable et semble répondre à tous vos besoins ...

PS: je suis le développeur de cette solution.

sebthebert
la source
1
Je ne voudrais pas risquer de déployer ou même de recommander un produit qui a "chatte" dans le nom. Cela ne se passerait probablement pas bien avec la plupart des entreprises, en particulier s'il y a des femmes travaillant dans l'informatique (assez courant de nos jours).
Starfish
0

Vous devez examiner un système de surveillance, par exemple Zenoss Core . Entre autres choses, il est dit sur la page d'introduction:

Zenoss Event Monitoring and Management offre la possibilité d'agréger les informations de journal et d'événement à partir de diverses sources, notamment la surveillance de la disponibilité, la surveillance des performances, les sources syslog, les sources d'interruption SNMP et le journal des événements Windows.

Voir quel-outil-utilisez-vous-pour-surveiller-vos-serveurs .

gimel
la source
Je ne savais pas que Zenoss avait des fonctionnalités d'agrégation de journaux. Je vais jeter un oeil - merci.
markdrayton