Monitorowanie aplikacji

Hej,

Problem jest następujący: jest wiele serwerów, każdy z nich ma uruchomione kilka usług. Potencjalnie, niektóre z nich mogą raz na jakiś czas zrobić coś brzydkiego i się wywalić / zeżreć całą pamięć / przestać odpowiadać itd.

W takiej sytuacji chciałbym: ubić, zrestartować, powiadomić admina o problemie.

Znam rozwiązanie p.t. "God’ (http://god.rubyforge.org) ale wolałbym omijać to cuś z daleka, przynajmniej jakiś czas temu ludzie mieli z nim sporo problemów. Jest również “Bluepill” http://asemanfar.com/Bluepill:-a-new-process-monitoring-tool, ale nic o nim nie wiem. Jest oczywiście jeszcze Nagios albo Monit.

Może jest jeszcze coś, nie koniecznie pisanego w Ruby, co polecacie?

Ja z reguły używam monita. Bez problemu można podpiąć typowe dla rubiego zabawki jak delayed job. Tak samo sphinx czy inne serwery.

Kiedyś potrzebowałem trochę bardziej zaawansowanego sprawdzania kiedy ubić proces i używałem Goda. Jakiś czas temu wycieki pamięci zostały poprawione. Podobno dalej czasami występują problemy z pamięcią, ale raczej mniejsze.

Jako rozwiązanie tego problemu miałem w cronie ubijanie goda raz na dzień :wink:

Ciekawe czy goda da się skonfigurować do monitorowania samego siebie ;).

Ok, popatrze na Monit.

Jest taki wynalazek jak Nagios który jest od lat używany do monitorowania wszystkiego co się da.

Blogga please. Mamy Nagiosa i jest to tak “fajne” w użyciu narzędzie, że nawet nie przyszłoby mi do głowy polecenie go Hubertowi.

Nagiosa wypróbowałem w pierwszej kolejności i jakoś nie powalił mnie na kolana ;).

Zabbix ? :slight_smile:

Monit niezbyt dobrze radzi sobie z nginxem, tzn. monitoruje tylko ten główny proces, ale nie widzę w ogóle passengera (bo ma zmieniający się pid). Da się to jakoś zorganizować?

Co do pida passengera nie wiem, ale możesz monitorować czy Twoja aplikacja odpowiada prawidłowo na zapytania HTTP.

Dokładnie tak, można zrobić coś takiego:

check process apache with pidfile /var/pids/apache.pid start program = “/etc/init.d/apache2 start” stop program = “/etc/init.d/apache2 stop” if failed host example.org port 80 protocol http with timeout 10 seconds for 3 cycles then restart
Nie sprawdzi to oczywiście konkretnie passengera, ale jeżeli host padnie, to zrestartuje się cały apache, co i tak często jest jedynym sposobem na podniesienie passengera.

Wszystkie narzędzie są beznadziejne. ™

Względnie dobre doświadczenia mam z Monitem, ostatnio podoba mi się Nagios (plus za możliwość tworzenie dowolnych czujek).

hmmm, z Munina nikt (poza mna) nie korzysta ? Masa wtyczek i jest w stanie powiadomic zanim sie cos zwali, w razie jesli Ci czego zabraknie kawalek jezyka skryptowego i masz co chcesz.

Pozdrowienia

Ja korzystałem trochę z Munina, ale bardziej na zasadzie zbierania statystyk niż bieżącego monitorowania. W porównaniu z godem i Monitem wydaje się być koszmarnie mało intuicyjny w konfiguracji.

Pomimo ze watek ma troche dni na karku pozwole sobie go odswiezyc bo moze pojawia sie jakies ciekawe opinie :smile:

Z czego korzystacie 4 lata pozniej ? :stuck_out_tongue: Czy God wciaz ma wycieki ?

Nadal monit.

Ostatnio dorzuciłem też kilka pluginów w NewRelic i testuję http://boundary.com/.

W podstawowym stopniu wyczerpuje to moje potrzeby.

Monit, Graphite, NewRelic, Airbrake.

Jako alternatywę dla goda i monita polecam rozważyć eye

Do rozważania polecam też Inspeqtor. Wydaje się bardziej poukladany/cywilizowany niż monit, ale jeszcze nie sprawdziłem osobiście, więc nie rekomenduję.