2009-03-03 14 views
7

Interesuje mnie, czy istnieje jakakolwiek alternatywa dla rrdtoola do rejestrowania danych szeregów czasowych. Patrzę na coś, co można skalować dla dużej liczby urządzeń do monitorowania.Narzędzie rrd alternatywne dla wysokiego wolumenu

Z tego, co przeczytałem na ten temat, rrdtool jest związany z I/O, gdy trafia się na niego dużą ilością danych. Ponieważ przewiduję to w skali do bardzo dużej liczby urządzeń do monitorowania, jestem ciekawy, czy jest jakaś alternatywa, która nie dusi się we/wy. Preferowane SQL, ale niekoniecznie.

Dzięki

+0

jeśli jest to I/O związany, nie byłoby to dobre? Oznacza to, że możesz użyć rozwiązania sprzętowego, takiego jak RAID, dyski półprzewodnikowe i wiele maszyn do śledzenia niepowiązanych danych? – JasonSmith

+0

również mój punkt widzenia ... pytanie brzmi, jak dobrze jest używana HW ... rrdcached użycie jest całkiem optymalne ... baza danych (na koniec dnia) również musi pisać rzeczy na dysk, ale ponieważ jest to o wiele bardziej ogólny cel, wątpię, czy uda mu się to tak skutecznie, jak rrdtool ... –

Odpowiedz

4

Jeśli chodzi o wydajność we/wy, to warto przyjrzeć się takiej wersji, jak rrdcached, która jest dostępna w bieżącej wersji (1.4) RRDTools.

Narzuty we/wy nie są funkcją zapisywanych danych, po każdej z wartości 8 bajtów na źródło danych. Przepustowość we/wy pochodzi z faktu, że cały sektor (zwykle 4k) musi zostać odczytany przed zapisaniem. Nagle, aby zapisać 8 bajtów, przeczytałeś/napisałeś 8k bajtów.

Rrdcached łączy wszystkie te zapisy razem, więc po aktualizacji RRD zmniejsza się stosunek użytecznych danych (rzeczywistych wartości DS) do zmarnowanych danych (zapasowe bajty w sektorze).

Wszystkie narzędzia RRDTool będą automatycznie pracować z rrdcached po wykryciu ich działania (za pomocą zmiennej środowiskowej). Umożliwia to wyzwalanie opróżnień w razie potrzeby, na przykład podczas generowania wykresu z danych.

Podczas przełączania na rozwiązanie oparte na języku SQL można rozważyć dodatkowe operacje we/wy, które będą wymagane do obsługi SQL. Biorąc pod uwagę, że nie masz tendencji do używania danych RRD w tym rodzaju wzorców dostępu losowego, baza danych jest trochę sledgehammer dla problemu. Podczas trzymania się RRDTool utrzymasz dostęp do całego ekosystemu narzędzi, które rozumieją i mogą pracować z plikami, co jest szczególnie przydatne, jeśli jesteś już zaznajomiony z nimi.

2

Mój przyjaciel zrobił jakąś pracę jakiś czas temu na backend SQL do przechowywania danych okrągły Robin: http://rrs.decibel.org

Jednak podejrzewam, że skoro pytasz o „urządzeniach do monitorowania” , może szukasz bardziej kompletnego rozwiązania.

+0

Znalazłem to w moich badaniach. Nie wyglądałem na zachowanego, więc byłem trochę niechętny w rozważaniu tego. – SorinV

+0

Po prostu to stwierdziłem, wydaje się, że ostatnia aktualizacja była 2005. Nie oznacza to, że teraz nie będzie działać, po prostu nie poświęciłem czasu na wyodrębnienie archiwum. : - / –

5

Istnieje kilka szeregów czasowych baz danych, które mają wysoką dostępność i/lub skalowalność jako cele.

Może rzucić okiem na

  • rrdcached, warstwę buforowania na szczycie RRD
  • whisper, silnik bazy danych za graphite
  • opentsdb jest rozproszona, skalowalna Time Series Database (TSDB) pisemne na górze HBase
  • reconnoiter chociaż koncentruje się bardziej na monitorowaniu
1

Jeśli operacje we/wy na sekundę są twoim głównym wąskim gardłem i używasz Linuksa, jest łatwy hack, który kosztuje tylko pamięć. Użyj zestawu montażowego tmpfs, aby rozmieścić zapisy RRD.

Wszystkie operacje wejścia/wyjścia zostaną wykonane w pamięci i nie spowodują żadnego zatorów napotkanych podczas tworzenia dysku i/o (jest to nawet szybsze niż w przypadku dysków SSD).Następnie możesz użyć zadania cron i rsync, aby kopiować tylko zmienione RRD na dysk raz na kilka minut.


Tworzenie katalogów

bash-4.2# mkdir /mnt/rrd-reads 
bash-4.2# mkdir /mnt/rrd-writes 

Tworzenie 500MB-maksymalna RAM system plików z odpowiednimi opcjami

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes 
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab 

skopiować stare pliki RRD do nowego podmontownego

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes 

Skonfiguruj swoją aplikację RRD pisanie pisać do nowego podmontownego

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf 

Skonfiguruj crona synchronizować tylko zmienione RRDs na dysku co 2 minuty

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync 

Nie zapomnij skopiować zapisanego pliku RRD es do punktu montowania przed uruchamiasz aplikację rrd-writing! Może zajść potrzeba edytowania skryptu init dla tej usługi, aby upewnić się, że pliki są tam, zanim się uruchomi. Jeśli rozpocznie się bez plików w miejscu, zostaną utworzone nowe, nagie, a będziesz bardzo zdezorientowany, gdy katalog odczytu zostanie zastąpiony pustymi RRD.

Jeśli w pewnym momencie trzeba zmienić rozmiar zamontować tmpfs, można to zrobić w locie:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes 
Powiązane problemy