Zdecydowałem się zrewidować tę zaakceptowaną odpowiedź, ponieważ stan wiedzy znacznie się zmienił w ciągu ostatnich 18 miesięcy i istnieją znacznie lepsze alternatywy.
Nowa odpowiedź
MongoDB to podrzędny wybór dla skalowalnego rozwiązania do rejestrowania. Są tego typowe przyczyny (na przykład wydajność zapisu pod obciążeniem). Chciałbym przedstawić jeszcze jedną, która polega na tym, że rozwiązuje tylko jeden przypadek użycia w rozwiązaniu do rejestrowania.
Dobre rozwiązanie do rejestrowania musi obejmować co najmniej następujące etapy:
- Kolekcja
- Transport
- Przetwarzanie
- Przechowywanie
- Szukaj
- Wizualizacja
MongoDB jako wybór rozwiązuje tylko przypadek użycia Storage (choć nieco słabo). Po przeanalizowaniu całego łańcucha istnieją bardziej odpowiednie rozwiązania.
@KazukiOhta wymienia kilka opcji. Moje preferowane rozwiązanie kompleksowe w dzisiejszych czasach obejmuje:
- Spedytor Logstash do odbioru i transportu
- Logstash &Riemann do przetwarzania
- ElasticSearch dla pamięci i zapytań
- Kibana3 do wizualizacji
Podstawowe zastosowanie ElasticSearch do przechowywania danych dziennika wykorzystuje aktualne najlepsze rozwiązanie NoSQL do przypadku użycia rejestrowania i wyszukiwania. Fakt, że Logstash-Forwarder / Logstash / ElasticSearch / Kibana3 są pod parasolem ElasticSearch, stanowi jeszcze bardziej przekonujący argument.
Ponieważ Logstash może również działać jako proxy Graphite, można zbudować bardzo podobny łańcuch dla powiązanego problemu zbierania i analizowania metryk (nie tylko logów).
Stara odpowiedź
Kolekcje MongoDB ograniczone są niezwykle popularne i nadają się do rejestrowania, z dodatkową premią polegającą na tym, że są „mniej schematów”, co zwykle jest semantycznie dopasowane do rejestrowania. Często wiemy tylko, co chcemy dobrze zalogować się do projektu lub po wykryciu pewnych problemów w produkcji. Relacyjne bazy danych lub ścisłe schematy wydają się być trudne do zmiany w takich przypadkach, a próby uczynienia ich „elastycznymi” zwykle powodują, że są „wolne” i trudne w użyciu lub zrozumieniu.
Ale jeśli chcesz zarządzać swoimi dziennikami w ciemności i korzystać z laserów, aby wyglądało, jakbyś pochodził z kosmosu, zawsze jest Graylog2, który wykorzystuje MongoDB jako część swojej ogólnej infrastruktury, ale zapewnia o wiele więcej na wierzchu, na przykład wspólny, rozszerzalny format, dedykowany serwer do zbierania logów, rozproszona architektura i ciekawy interfejs użytkownika.