Robię research dotyczący odpowiedniej architektury dla aplikacji, która będzie pobierała statystyki z wielu różnych źródeł – część z naszych wewnętrznych API, część z zewnętrznych. Później z danymi trzeba będzie zrobić rzeczy typu drill down, faceted search i tym podobne.
Myślę, że samo pobieranie danych nie będzie ogromnym wyzwaniem. Co będzie bardziej skomplikowane natomiast to przechowywanie danych w taki sposób, żeby w łatwy sposób dało się je wyciągać i tworzyć z nich przeróżne statystyki.
W luźnej rozmowie w pracy pojawił się pomysł na przykład wykorzystania InfluxDB. Akurat włączyłem transmisję z dzisiejszego WRUG-a i widzę, że była mowa o RRDtool.
Domyślam się, że to nie jest nowy problem i masa ludzi już go w różny sposób rozwiązała; byłbym ogromnie wdzięczny za wskazanie wszelkich zasobów na ten temat: książki, posty, własne doświadczenia, screencasty itd.
Trudno powiedzieć - zadałeś bardzo ogólne pytanie, ponieważ taki system przy większych rozwiązaniach jest szyty na miarę. Wszystko zależy od potrzeb. Jeśli masz coś customowego to będziesz tworzyć customowe rozwiązanie. Jeśli statystyki są standardowe dla 90% innych użytkowników (pobieranie danych o utylizacji sieci, dysku, mierzenie liczby requestów http itp.) to pewnie nadadzą się narzędzia takie jak munin/collectd.
W przypadku rrdtoola sytuacja wygląda tak, że tam możesz przechowywać tylko dane liczbowe. Z tych danych liczbowych możesz później tworzyć przeróżne wykresy, które będą pokazywać zmianę tych danych w czasie. Moduł do rysowania jest przeogromny:
Do wykresów polecam jednak używać rrd-ffi, ponieważ przy bardziej skomplikowanych wykresach to napisać to nie problem - debugować i szukać błędów to sztuka
Dane też możesz analizować zewnętrznymi narzędziami (rrdtool fetch, dump, xport).
Generalnie informacje o systemach do monitoringu oraz przechowywania statystyk są strasznie porozrzucane w sieci. Osobiście nie znam żadnej publikacji, która by wyczerpywała chociaż w 10% temat.
Przez kilka lat zrobiłem kilka prezentacji o monitoringu w PLIX, tyle że tam case był taki, że monitorowaliśmy głównie sieć oraz infrastrukturę: http://www.slideshare.net/y3ti/
Musisz podać więcej konkretów.
PS. Proces pobierania danych nie zawsze jest taki trywialny. Tutaj też może być wiele podejść:
pasywny monitoring/aktywny monitoring
czy musimy brać pod uwagę opóźnienie spowodowane narzutem związanym z odpytywaniem o statystyki
jak obsługiwać błędy (brak danych, nieprawidłowe dane)
czy odpytywanie jest procesem stanowym, czy bezstanowym
jak to skalować (czy mamy jeden proces służący do pobierania danych, czy kilka. Czy może wystąpić wyścig?)
Dzięki za odpowiedź! Zapomniałem tylko dodać, że chodzi nie tyle o monitoring stanu serwera, co dane biznesowe, ale z tego, co rozumiem, to RRDtool także może mieć tutaj zastosowanie.