Chciałbym skonfigurować statsd / grafit, aby móc logować aplikacje JS działające na urządzeniach HTML (tj. Nie w zamkniętym środowisku LAN i być może z dużą ilością przychodzących danych, których nie kontroluję bezpośrednio).
Moje ograniczenia:
- punkt wejścia musi mówić przez HTTP: rozwiązuje to prosty serwer proxy HTTP-do-UDP-statsd (np. httpstatsd na github)
- musi się oprzeć awarii pojedynczego serwera (aby zwalczyć prawo Murphy'ego :)
- musi być skalowalny w poziomie: webscale, kochanie! :)
- architektura powinna być możliwie najprostsza (i tania)
- moje serwery to maszyny wirtualne
- pliki danych będą przechowywane w urządzeniu filtrującym (z NFS)
- Mam do dyspozycji sprzętowe równoważniki obciążenia tcp / udp
Krótko mówiąc, ścieżka danych: [klient] - (http) -> [http2statsd] - (udp) -> [statsd] - (tcp) -> [grafit] - (nfs) -> [filer]
Moje dotychczasowe ustalenia:
- skalowanie części http2statsd jest łatwe (demony bezstanowe)
- skalowanie części statsd nie wydaje się proste (wydaje mi się, że skończyłbym się niespójnymi wartościami w graficie dla danych agregowanych, takich jak suma, śr, min, maks ...). Chyba że demon HTTP nie wykonuje spójnego mieszania w celu odłamania kluczy. Może pomysł ... (ale jest jeszcze pytanie HA)
- skalowanie części grafitowej można wykonać poprzez dzielenie (za pomocą przekaźnika węglowego) (ale to również nie rozwiązuje pytania HA). Oczywiście kilka wystąpień szeptanych nie powinno zapisywać tego samego pliku NFS.
- skalowanie części filtrującej nie jest częścią pytania (ale im mniej IO, tym lepiej :)
- skalowanie aplikacji wydaje się oczywiste (chociaż nie testowałem), ponieważ czytają tylko udostępnione dane NFS
Zastanawiałem się więc, czy ktoś miał jakieś doświadczenia i najlepsze praktyki, aby podzielić się solidnym wdrożeniem statystyki / grafitu?