Jeg har besluttet mig for at revidere dette accepterede svar, da den nyeste teknologi har bevæget sig markant i de sidste 18 måneder, og der findes meget bedre alternativer.
Nyt svar
MongoDB er et subpar valg til en skalerbar logningsløsning. Der er de sædvanlige årsager til dette (f.eks. skriveydelse under belastning). Jeg vil gerne fremlægge en mere, som er, at den kun løser en enkelt use case i en logningsløsning.
En stærk logningsløsning skal mindst dække følgende trin:
- Samling
- Transport
- Behandler
- Opbevaring
- Søg
- Visualisering
MongoDB som et valg løser kun Storage use casen (omend noget dårligt). Når hele kæden er analyseret, er der mere passende løsninger.
@KazukiOhta nævner et par muligheder. Min foretrukne ende-til-ende-løsning i disse dage involverer:
- Logstash-Forwarder til indsamling og transport
- Logstash &Riemann til behandling
- ElasticSearch for Storage &Queries
- Kibana3 til visualisering
Den underliggende brug af ElasticSearch til logdatalagring bruger den nuværende bedste NoSQL-løsning til logning og søgning. Det faktum, at Logstash-Forwarder / Logstash / ElasticSearch / Kibana3 er under paraplyen af ElasticSearch, giver et endnu mere overbevisende argument.
Da Logstash også kan fungere som en grafit-proxy, kan en meget lignende kæde bygges til det tilhørende problem med at indsamle og analysere metrics (ikke kun logs).
Gammelt svar
MongoDB Capped Collections er ekstremt populære og velegnede til logning, med den ekstra bonus at være 'schema less', hvilket normalt er en semantisk pasform til logning. Ofte ved vi først, hvad vi vil logge godt ind i et projekt, eller efter at der er fundet nogle problemer i produktionen. Relationelle databaser eller strenge skemaer har tendens til at være svære at ændre i disse tilfælde, og forsøg på at gøre dem 'fleksible' har en tendens til blot at gøre dem 'langsomme' og svære at bruge eller forstå.
Men hvis du gerne vil administrere dine logfiler i mørke og have lasere i gang og få det til at se ud som om du er fra rummet, er der altid Graylog2, som bruger MongoDB som en del af sin overordnede infrastruktur, men som giver en hel del mere oveni, som f.eks. almindeligt, udvideligt format, en dedikeret logindsamlingsserver, distribueret arkitektur og en funky brugergrænseflade.