2009-03-20 12 views
5

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.

Odpowiedz

0

Myślę, że to, czego potrzebujesz, jest zbyt szczegółowe, aby znaleźć coś, co dobrze pasuje do twoich potrzeb. Ale...

To, co opisałeś na temat log4j, wydaje mi się wspaniałe: po zarejestrowaniu błędów w DB, prosta aplikacja internetowa pozwoli ci je przejrzeć, filtrować i konfigurować wzorce do odpalania e-maili, na przykład błędów od konkretna aplikacja, próg błędu, komunikat zawierający pewne wyrażenie regularne, itp.

Potrzebne jest również małe cronjob, które łączyłoby się z bazą danych, wyszukiwanie nowych rekordów (w oparciu o sprawdzony ostatni raz) spełniających kryteria wiadomości e-mail i wyślij je.

Kodowanie tego wszystkiego nie powinno potrwać dłużej niż kilka dni w najgorszym przypadku, a co za tym idzie, otrzymasz w 100% niestandardowe narzędzie dla Ciebie.

1

Cóż, wygląda na to, że dobrym rozwiązaniem byłoby przetrawienie dzienników błędów. Każda noc ma proces przechodzenia przez logi błędów i zwinąć błąd/ostrzeżenie/etc na dzień i umieścić je w e-mailu. Możesz nawet pogrupować je według wagi i/lub aplikacji, jeśli sobie tego życzysz.

Ostatecznie otrzymasz tylko jeden e-mail dziennie z wszystkimi informacjami tam na wyciągnięcie ręki. Nie jest to "szybkie" lub nawet eleganckie rozwiązanie, ale może być bardzo praktyczne w dłuższej perspektywie.

To również nie zapewnia żadnych opcji w czasie rzeczywistym. Ale z tego można go przekształcić w rozwiązanie bardziej w czasie rzeczywistym. Nie byłoby trudno napisać proces, który monitoruje pliki dziennika pod kątem zmian, a następnie uruchamia pewne reguły w oparciu o ostatni komunikat o błędzie. To parsowanie staje się trudne. ;) Powodzenia.

Powiązane problemy