2012-05-18 27 views
5

Tôi nên làm thế nào để viết kịch bản trình quản lý daemontools?Làm thế nào để giám sát một máy chủ web với daemontools?

Tôi đã bắt đầu sử dụng trình xử lý da D. J. Bernsteins để giữ cho một số quy trình đang chạy và hoạt động tốt. Nhưng bây giờ tôi cần phải theo dõi một vài điều kiện bổ sung về các quy trình đó và tôi đã không tìm được thông tin tốt về cách thực hiện điều đó.

Kịch bản của tôi là tôi có một số quy trình đang chạy cho ứng dụng web (máy ảo pharo smalltalk) và chúng phản hồi http, mỗi cổng trong cổng của chúng (đó là dành cho sự mất cân bằng). Tôi muốn bằng cách nào đó ping những người đó để xác minh rằng họ không chỉ chạy mà trả lời các yêu cầu http. Nếu họ không trả lời theo một cách nhất định cho yêu cầu trên 30 tuổi, họ sẽ được coi là bị lỗi và chỉ cần khởi động lại.

Điều này có thể thực hiện được với daemontools không? nếu vậy, tôi nên viết kịch bản này như thế nào và tôi nên đặt nó ở đâu? hoặc tài liệu về điều này ở đâu?

Trả lời

6

Giải pháp đơn giản nhất là tạo một tác vụ daemontool khác với tập lệnh ngủ trong 30 giây và sau đó kiểm tra sự hiện diện của dịch vụ (sử dụng wget hoặc curl chẳng hạn). Nếu dịch vụ không phản hồi kịp thời, bạn có thể khởi động lại dịch vụ (svc -t yourapp) và/hoặc gửi thông báo. Tập lệnh chạy của dịch vụ mới có thể trông đơn giản như thế này:

#!/bin/sh 
sleep 30 
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then 
    svc -t /etc/service/yourapp 
fi 

Tôi cũng đã có trải nghiệm tốt với các công cụ như . Một lần nữa bạn cần cung cấp một kịch bản cung cấp thông tin về trạng thái của hình ảnh của bạn. Nếu bạn thiết lập hình ảnh của mình bằng dịch vụ REST, bạn thậm chí có thể cung cấp các số liệu thực sự thú vị như phiên hoạt động, phiên không hoạt động, thông số gc, mức tiêu thụ bộ nhớ, thống kê cơ sở dữ liệu, ... Công cụ này sẽ vẽ đồ thị đẹp theo thời gian và cho phép bạn chỉ định ranh giới được thông báo khi mọi thứ hoạt động kém.

+0

Thanx. nhưng không có cách nào để làm điều này trong chính người giám sát? – pauel

+0

Có, xem đoạn đầu tiên của câu trả lời của tôi. –

+0

vâng tôi hiểu rồi. chỉ là tôi nghĩ người giám sát điều hành daemon có thể làm điều đó theo bất kỳ cách nào. Anyways giải pháp của bạn giúp tôi rất nhiều. Rất cám ơn – pauel

3

Để phát hiện nếu dịch vụ này đáp ứng, bạn có thể sử dụng curl (hoàn toàn phù hợp cho HTTP và dòng lệnh/script shell)

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out! 

và bạn có thể viết những điều phức tạp hơn, như kiểm tra rằng phản ứng là 200 (OK), v.v.

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