2009-03-20 27 views
5

Nhóm của chúng tôi có một số quy trình mà chúng tôi chạy thủ công nhưng có thể chạy trong nhiều ngày. Các quy trình thực hiện nhiều việc khác nhau với số lượng lớn các thực thể (trang web, hàng cơ sở dữ liệu, hình ảnh, tệp, v.v.). Rõ ràng theo thời gian có những thất bại và chúng tôi phải thiết kế hoặc xử lý để xử lý những thất bại một cách duyên dáng và di chuyển trên để toàn bộ công việc không được đưa xuống.Các phương pháp hay nhất để theo dõi cảnh báo/lỗi trong các quy trình chạy dài là gì?

Tùy thuộc vào quy trình cụ thể được đề cập, tỷ lệ, mức độ nghiêm trọng và mức độ khẩn cấp của các lỗi xảy ra khác nhau. Trong một số trường hợp, chúng tôi gửi email khi một lỗi hiếm nhưng quan trọng xảy ra, trong các trường hợp khác, chúng tôi chỉ đăng nhập và di chuyển, v.v.

Vấn đề là chúng tôi có mã xử lý lỗi khác nhau rải rác khắp nơi và thường không phải khi chúng tôi "đăng nhập và di chuyển" không ai quay lại và đọc nhật ký, vì vậy không ai biết vấn đề nào xảy ra. Chúng tôi không thể mặc định gửi email cho tất cả các sự cố vì sẽ chỉ có quá nhiều email.

Đây là các quy trình đang chạy dài nhưng không phải là các trình tiện ích mở rộng nơi có thứ gì đó như SNMP hoặc Nagios có thể phù hợp. Chắc chắn đây là một vấn đề khá phổ biến nhưng tôi dường như không thể tìm thấy nhiều giải pháp trực tuyến. Tôi đã nghe mọi người nói về việc sử dụng log4j (hoặc các gói ghi nhật ký tương tự khác) để đăng nhập vào cơ sở dữ liệu, v.v ... có vẻ như đó là một bước đi đúng hướng, nhưng chắc chắn có nhiều giải pháp phức tạp hơn. ? Tôi đang tưởng tượng điều gì đó mà logger của bạn ghi sự kiện vào cơ sở dữ liệu và có giao diện web giống Nagios cho phép bạn xem lỗi nào đang xảy ra với quy trình nào trong thời gian thực cũng như định cấu hình cảnh báo email cho các mẫu cụ thể, v.v.

Có cái gì như thế này tồn tại? Nếu không, bạn đã sử dụng phương pháp nào để xử lý thành công các vấn đề tương tự?

(Đối với những gì nó đáng giá nhất của codebase của chúng tôi là python nhưng tôi sẽ tưởng tượng bất kỳ triển khai phong nha của ý tưởng này phần lớn là không đau khổ cụ thể và rõ ràng là bất kỳ giải pháp khái niệm sẽ là tốt).

Cập nhật: Tôi chỉ dành chút thời gian xem Chainsaw, đây là thứ tôi đang tìm kiếm, nhưng tôi muốn nó là một ứng dụng web thay vì ứng dụng dành cho máy tính để bàn và có chức năng cảnh báo.

Cập nhật: Tôi vừa phát hiện ra hoptoadappexceptional cả hai đều nằm dọc theo dòng suy nghĩ của tôi, mặc dù cả hai mục tiêu Rails cụ thể.

Trả lời

0

Tôi nghĩ rằng những gì bạn cần ở đây là quá cụ thể để tìm thấy thứ gì đó đã được xây dựng phù hợp với nhu cầu của bạn. Nhưng...

Những gì bạn mô tả về log4j có vẻ tuyệt vời đối với tôi: một khi bạn đã đăng nhập vào DB, một ứng dụng web đơn giản sẽ cho phép bạn xem chúng, lọc và thiết lập mẫu để kích hoạt email như lỗi ứng dụng cụ thể, ngưỡng lỗi, thông báo chứa một số regex, v.v.

Ngoài ra, bạn sẽ cần một số cronjob nhỏ kết nối với DB, tìm kiếm bản ghi mới (dựa trên lần kiểm tra cuối cùng) khớp với tiêu chí email và gửi chúng đi.

Mã hóa tất cả điều này sẽ không mất nhiều hơn một vài ngày vào lúc tồi tệ nhất và, đối với những gì đáng giá, bạn sẽ có công cụ tùy chỉnh 100% cho bạn.

1

Vâng, có vẻ như giải pháp khả thi là tiêu hóa các nhật ký lỗi. Mỗi nite có một quá trình đi qua các bản ghi lỗi và cuộn lên các lỗi/cảnh báo/etc cho ngày và đưa những người vào một email. Bạn thậm chí có thể nhóm chúng theo mức độ nghiêm trọng và/hoặc ứng dụng nếu bạn muốn.

Cuối cùng, bạn chỉ nhận được một email mỗi ngày với tất cả thông tin ngay trong tầm tay bạn. Không phải là một giải pháp "nhanh" hoặc thậm chí thanh lịch nhưng có thể rất khả thi trong thời gian dài.

Điều này cũng không đủ khả năng cho bất kỳ tùy chọn thời gian thực nào. Nhưng từ đó bạn có thể phát triển nó thành một giải pháp thời gian thực hơn. Sẽ không khó để viết một quá trình giám sát các tệp nhật ký cho các thay đổi và sau đó kích hoạt một số quy tắc dựa trên thông báo lỗi cuối cùng. Đó là việc phân tích cú pháp trở nên phức tạp. ;) Chúc may mắn.

Các vấn đề liên quan