J'ai décidé de réviser cette réponse acceptée car l'état de l'art a considérablement changé au cours des 18 derniers mois, et de bien meilleures alternatives existent.
Nouvelle réponse
MongoDB est un choix de sous-par une solution de journalisation évolutive. Il y a les raisons habituelles pour cela (écrire des performances sous charge par exemple). Je voudrais en proposer un de plus, c'est-à-dire qu'il ne résout qu'un seul cas d'utilisation dans une solution de journalisation.
Une forte étapes solution doit couvrir au moins l'exploitation forestière suivantes:
- Collection
- Transport
- Traitement
- Stockage
- Recherche
- Visualisation
MongoDB en tant que choix résout seulement le cas d'utilisation de stockage (quoique quelque peu mal). Une fois la chaîne complète analysée, il existe des solutions plus appropriées.
@KazukiOhta mentionne quelques options. Ma fin préférée à la solution de fin de ces jours implique:
T L'utilisation sous-jacente d'ElasticSearch pour le stockage des données de journalisation utilise la meilleure solution NoSQL actuelle pour la consignation et la recherche du cas d'utilisation. Le fait que Logstash-Forwarder/Logstash/ElasticSearch/Kibana3 soient sous l'égide de ElasticSearch est un argument encore plus convaincant. Puisque Logstash peut également agir comme un proxy Graphite, une chaîne très similaire peut être construite pour le problème associé de collecte et d'analyse des mesures (pas seulement les journaux).
Vieille réponse
MongoDB Capped Collections sont extrêmement populaires et suitable for logging, avec l'avantage supplémentaire d'être « schéma moins », ce qui est généralement un ajustement sémantique pour l'exploitation forestière. Souvent, nous ne savons que ce que nous voulons enregistrer dans un projet, ou après que certains problèmes ont été trouvés dans la production. Les bases de données relationnelles ou les schémas stricts ont tendance à être difficiles à modifier dans ces cas, et les tentatives de les rendre «flexibles» tendent simplement à les rendre «lents» et difficiles à utiliser ou à comprendre. Mais si vous préférez manage your logs in the dark and have lasers going and make it look like you're from space, il y a toujours Graylog2 qui utilise MongoDB dans le cadre de son infrastructure globale, mais qui en offre beaucoup plus, comme un format commun et extensible, un serveur de collecte de journaux dédié, une architecture distribuée et un interface utilisateur funky.
Graylog2, impressionnant. Merci pour le conseil! – ikrain
Juste un mot d'avertissement, nous avons rencontré de graves problèmes avec MongoDB lors de l'écriture de plus de quelques milliers d'événements par seconde pour les collections de journaux. La performance d'écriture terne de MongoDB peut être le coupable. –
À propos de Graylog2, veuillez prendre note: "Tout fonctionne sur la JVM existante dans votre centre de données." Si vous manquez cela, vous ne verrez rien tant que vous ne regarderez pas le troisième ou le quatrième paragraphe des instructions d'installation du paquet de téléchargement ("Vous devez également utiliser Java 7!"). Je pense toujours que c'est drôle de voir comment les projets basés sur Java oublient de mentionner qu'ils sont des projets basés sur Java lorsqu'ils se vendent. Juste IMO. – L0j1k