Vous vous connectez à un fichier texte ou à une base de données?

25

Quand dois-je utiliser la base de données pour la journalisation et quand les fichiers texte?
Je constate que les serveurs Web et les cadres Web (que votre application utilise en interne) enregistrent généralement (toujours?) Les demandes et les erreurs dans les fichiers texte par défaut. Mais je vois que les gens qui développent leur application autour de ces serveurs et frameworks se connectent parfois à la base de données (même la base de données principale de l'application, pas une externe).
Il y a peut-être aussi une différence entre les journaux de débogage et les journaux d'audit - j'ai lu cette classification quelque part sur ce site.

Nakilon
la source
Cela peut aussi aider stackoverflow.com/questions/3458813/…
Muhammad Raja
Bien que vous ne deviez pas enregistrer des informations sensibles, certains systèmes peuvent en avoir besoin, et c'est un bon cas pour se connecter à la base de données. Parfois, les développeurs enregistrent par inadvertance des informations sensibles. Pour se prémunir contre cet accident, de nombreux développeurs d'applications se connectent uniquement à une base de données afin que des éléments tels que les numéros de sécurité sociale dans les messages de journal ne soient pas placés dans un fichier texte en texte brut sur 13 serveurs différents.
Greg Burghardt

Réponses:

16

En termes très généraux, la journalisation dans un fichier texte est beaucoup plus rapide que la journalisation dans une base de données. C'est l'aspect principal de la journalisation que vous devez considérer.

La raison pour laquelle vous vous connectez à une base de données est probablement parce que vous souhaitez interroger les résultats - la recherche d'informations de journal particulières est plus facile dans une base de données, en particulier si vous enregistrez des informations contextuelles qui peuvent être utilisées pour regrouper des entrées de journal. Il est également généralement plus facile d'accéder à une base de données centrale qu'un fichier journal sur un serveur qui peut être sécurisé et inaccessible.

L'idéal serait de se connecter localement à un fichier, puis de migrer ces données vers une base de données pour inspection si nécessaire par la suite.

Maintenant, l'audit est une bête complètement différente. Bien que son concept soit similaire à celui de la journalisation, l'audit doit généralement être conservé pendant une longue période (contrairement aux fichiers journaux utilisés pour le débogage ou le traçage qui peuvent être supprimés à volonté). Les audits sont là pour montrer des informations importantes. Vous enregistrez beaucoup moins d'informations d'audit et moins souvent que la journalisation normale, les performances ne sont donc pas un problème. C'est pour cette raison que les avantages de l'écriture de ces informations d'audit dans une base de données centrale sont visibles.

gbjbaanb
la source
1
Un autre arrangement que j'ai vu est que les journaux soient écrits localement au départ, puis poussés vers la base de données par une sorte de travail en arrière-plan.
Robbie Dee
@RobbieDee J'aime cette idée. J'ai une sorte de question en double: est-il courant d'avoir des fichiers journaux de durée limitée (par exemple, les 30 derniers jours seulement) mais comme les journaux sont poussés dans la base de données (par exemple hebdomadaire), alors tous les journaux sont stockés dans la base de données => les fichiers journaux agissent comme un tampon uniquement et toutes les opérations de lecture sont effectuées sur la base de données? Comme l'écriture dans la base de données est retardée, les performances ne vous inquiètent pas, n'est-ce pas.
Al-un
9

Il n'y a pas d'approche unique et pour la résilience, vous souhaitez parfois utiliser plusieurs approches. En prenant votre exemple, vous souhaiterez peut-être cacher les journaux de débogage dans un fichier et stocker les journaux d'audit dans une base de données.

Fil d'Ariane de l'application

Avantages: Facile à mettre en œuvre et visible immédiatement pour l'utilisateur

Inconvénients: les informations ne persistent que lorsque l'application est en cours

Fichier texte

Avantages: Facile à mettre en œuvre

Inconvénients: besoin de s'assurer que le verrouillage des fichiers ne se produit pas. Que faire lorsque l'espace disque est épuisé sur le lecteur de journal?

Journal des événements

Avantages: Facile à mettre en œuvre

Inconvénients: le journal des événements peut devenir plein s'il n'est pas configuré correctement ou les anciens journaux peuvent être perdus en raison de la politique de rétention / effacement.

Base de données

Avantages: Facile à mettre en œuvre

Inconvénients: plus de trafic DB. Comment enregistrer une perte de base de données ou un autre problème de base de données?

Messagerie (MQ)

Avantages: tirez et oubliez

Inconvénients: une autre couche pour se tromper. Nécessite une configuration

Robbie Dee
la source
Vous pouvez également souhaiter inclure le démon syslog et les destinations de journal SNMP.
gbjbaanb
@gbjbaanb Eh bien, en effet - certains systèmes d'exploitation ont une telle fonctionnalité intégrée - ce n'est certainement pas une liste exhaustive. Les systèmes à haute disponibilité peuvent également envoyer des SMS lorsqu'ils tombent en panne.
Robbie Dee
2

Les journaux d'audit doivent garantir une traçabilité complète des opérations sur une plus longue période à des fins d'audit, dans le but de justifier pleinement le contenu de votre base de données.

Dans certains cas (par exemple, les applications financières), ces journaux peuvent devoir garantir la conformité aux exigences légales telles que la conservation (dans certains pays pendant 10 ans) ou l'inaltérabilité. Comme ces journaux doivent justifier le contenu de la base de données au niveau de l'application, il est courant de les stocker dans la base de données, où l'accès peut être contrôlé pour éviter toute altération non autorisée.

D'autres journaux , comme les journaux de surveillance ou les journaux de sécurité, doivent souvent faire face à des contraintes de performances et de volume. Celles-ci sont généralement écrites dans un fichier car elles sont plus rapides à écrire (pas de surcharge de gestion des transactions), plus faciles à archiver hors ligne et plus faciles à intégrer avec les outils SIEM de surveillance externes .

Il convient de noter que, bien que ce type de journaux puisse être utilisé pour démontrer la fiabilité des journaux d'audit (par exemple, aucun accès non autorisé), ils ont généralement des contraintes de conservation plus courtes (par exemple entre 6 mois et 2 ans à des fins d'application de la loi pour les journaux de télécommunications) si aucune contrainte du tout.

Christophe
la source
1

L'une des nombreuses raisons d'utiliser db pour la journalisation du débogage est lorsque vous n'avez pas accès à l'application ou au serveur Web pour afficher l'observateur d'événements ou les fichiers texte

Les journaux d'audit sont différents, puis les journaux de débogage dans le contexte de l'application Web, car dans certaines applications, vous devrez peut-être les montrer à l'utilisateur final afin qu'ils puissent aller dans la base de données pour une récupération facile.

Vous pouvez également utiliser DB Tools pour filtrer et visualiser facilement.

Muhammad Raja
la source
L'écriture sur les fichiers journaux du serveur n'est pas la seule option pour les systèmes à concurrence élevée. Ces journaux sont souvent écrits sur la machine cliente puis poussés à travers le support en cas de problème. Une simultanéité élevée peut également rendre cela inapproprié pour l'écriture dans une seule base de données.
Robbie Dee
@RobbieDee Est-ce aussi le cas pour les serveurs Web et les applications Web? car c'est ce que demande OP, je crois
Muhammad Raja