Nasz zespół ma wiele procesów, które uruchamiamy ręcznie, ale które mogą działać przez wiele dni. Procesy wykonują różne czynności na dużą liczbę podmiotów (strony internetowe, wiersze baz danych, obrazy, pliki itp.). Oczywiście od czasu do czasu zdarzają się awarie i musimy zaprojektować lub przetworzyć procesy, aby z wdziękiem poradzić sobie z tymi awariami i przejść dalej, aby cała praca nie została przerwana.Jakie są najlepsze praktyki dotyczące śledzenia ostrzeżeń/błędów w długich procesach?
W zależności od konkretnego procesu, stawka, dotkliwość i pilność awarii są różne. W niektórych przypadkach wysyłamy e-maile, gdy wystąpi rzadki, ale ważny błąd, w innych przypadkach po prostu logujemy go i kontynuujemy, i tak dalej.
Problem polega na tym, że mamy różne kody obsługi błędów rozproszone wszędzie, a częściej, gdy "logujemy i poruszamy się" nikt nigdy nie wraca i czyta dzienniki, więc nikt nigdy nie wie, jakie problemy wystąpiły. Nie możemy domyślnie wysyłać e-maili do wszystkich problemów, ponieważ byłoby po prostu zbyt wiele e-maili.
Są to długo działające procesy, ale nie demony, w których coś takiego jak SNMP lub Nagios może być dobrze dopasowane. Z pewnością jest to dość powszechny problem, ale nie mogę znaleźć wielu rozwiązań w Internecie. Słyszałem, że ludzie mówią o używaniu log4j (lub innych podobnych pakietów logowania) do logowania do bazy danych itp., Co wydaje się być krokiem we właściwym kierunku, ale z pewnością istnieją bardziej zaawansowane rozwiązania. ? Wyobrażam sobie coś, w czym twój rejestrator zapisuje zdarzenia w bazie danych i istnieje interfejs WWW typu Nagios, który pozwala zobaczyć, jakie błędy występują w czasie rzeczywistym, a także skonfigurować powiadomienia e-mail dla określonych wzorców, itp.
Czy coś takiego istnieje? Jeśli nie, jakie metody zastosowałeś, aby skutecznie poradzić sobie z podobnymi problemami?
(Za to, co jest warte większości naszego kodu źródłowego, jest pyton, ale wyobrażam sobie, że wszelkie przyzwoite implementacje tego pomysłu są w dużej mierze pozbawione angażowania i oczywiście wszelkie rozwiązania koncepcyjne byłyby również).
Aktualizacja: Spędziłem trochę czasu patrząc na Chainsaw, która jest czymś, czego szukam, ale chciałbym, aby była to aplikacja internetowa zamiast aplikacji komputerowej i ma funkcję ostrzegania.
Aktualizacja: Właśnie odkryłem hoptoadapp i exceptional, które są nieco zbliżone do tego, o czym myślałem, chociaż obaj kierują się specjalnie na Railsy.