Thay thế cho Daemontools (djbtools) để giám sát các quy trình unix?


26

Tôi đã sử dụng Daemontools để cung cấp một cách đơn giản và đáng tin cậy để giám sát các dịch vụ Unix trên máy chủ của mình. Nó hoạt động tốt, nhưng nó đòi hỏi một cách suy nghĩ khác ( The DJB Way ) và một số khiếu nại phổ biến là:

  • Dấu thời gian dựa trên TAI64N
  • Không lưu trữ tập lệnh dưới /etc/init.d (hoặc (/usr/local)/etc/rc.d)
  • Không phải lúc nào cũng hoạt động với các tập lệnh như apachectl. Một số kịch bản cần phải được viết lại.

Tôi nhớ rằng một số daemon "giám sát / giám sát" tương tự đã có trong các tác phẩm khoảng hai năm trước, nhưng một số vẫn còn hơi thô xung quanh các cạnh.

Nếu bạn đã chuyển từ Daemontools sang một thứ khác, bạn đã chọn gì và nó có hoạt động tốt với bạn không? RedHat hoặc Ubuntu có đi kèm với bất kỳ tiện ích giám sát quy trình nào theo mặc định không?

Câu trả lời:


16

Hrm, nếu bạn đang sử dụng Ubuntu, quy trình khởi động mới của họ, mới bắt đầu , bao gồm một mức độ giám sát quy trình. Nó có thể được sử dụng cho việc bắt đầu và dừng dịch vụ tiêu chuẩn của bạn, các tập lệnh la SysV và nó cũng có thể giám sát các ứng dụng đang chạy và hồi sinh chúng nếu chúng chết.

Bạn cũng có thể thực hiện quy trình của một người đàn ông nghèo thông qua inittab, tùy thuộc vào nhu cầu của bạn là gì.

Nếu bạn chủ yếu tìm kiếm cái gì để giữ một mắt trên một quá trình, để đảm bảo nó luôn luôn chạy, và sau đó khởi động lại nó khi nó không phải là, tôi đã có may mắn lớn với restartd . Thật không may, nguồn duy nhất cho nó mà tôi biết là gói Debian. Tuy nhiên, đây là một ứng dụng rất nhỏ và đơn giản, về cơ bản chỉ là một tệp .c và .h, với một tệp tạo. Việc biên dịch nó từ tarball nguồn Debian trên Red Hat là chuyện nhỏ (tôi thậm chí đã tạo ra một RPM của nó trong công việc trước đây của mình).

Một lựa chọn cuối cùng tôi đã nghe nói, nhưng không được sử dụng, là Người giám sát . Nó trông giống như một công cụ đầy hứa hẹn, nhưng restartd đã hoạt động đủ tốt với tôi trong quá khứ, với những gì tôi cần, mà tôi chưa bận tâm để chơi với nó.


12

+1 cho runit. Nhiều tính năng và linh hoạt hơn daemontools, tương thích với các đối số và tùy chọn daemontools hiện có. Khá gọn gàng.

Nhưng như bạn đã đề cập, rất nhiều công cụ đi kèm với các nhị phân điều khiển của riêng chúng, apache2ctl, ejabberdctl, poundctl, colld, v.v. có thể thực hiện. Tôi thường thỏa hiệp và có hầu hết các dịch vụ chạy dưới sự giám sát của runit. Và những người khác có thể được phép chạy bằng cách tầm thường.


1
+1 Điều đáng nói là runsvlệnh từ runithỗ trợ các điều khiển tùy chỉnh, do đó việc khởi động lại có thể được thực hiện theo các nhị phân điều khiển riêng của daemon.
hương

4

Vâng, có runit . Tôi không thể nói cho bạn biết sự khác biệt và tương đồng của nó với daemontools là gì, nhưng đánh giá bởi trang web Berstein-esque, tôi muốn nói rằng có một ảnh hưởng Bernstein nhất định.


2
Phiếu bầu của tôi là dành cho runit, với điều kiện là bạn có thể thả nó vào một sắp xếp SysVInit và nó sẽ chiếm /etc/init.d/ <scriptname> khá minh bạch.
Avery Payne


4

Thay thế cho gói đã được đề cập daemonizedaemontools, có lệnh daemon của gói libslack.

daemon là khá cấu hình và không quan tâm đến tất cả các công cụ daemon tẻ nhạt như tự động khởi động lại, đăng nhập hoặc xử lý pidfile.



3

Ngoài ra còn có công cụ daemon của libslack được viết bằng C và có sẵn cho các nền tảng (Unix) khác nhau.

Nó khá cấu hình và không quan tâm đến tất cả các công cụ daemon tẻ nhạt như tự động khởi động lại, ghi nhật ký hoặc xử lý pidfile.


2

Ubuntu đi kèm với Upstart - Tôi không biết nhiều về nó nhưng tôi biết nó có khả năng "giám sát". Apple launchd là một tùy chọn khác (bài viết Wikipedia có phần "xem thêm" cũng liệt kê một loạt những người khác, bao gồm Upstart & RunIt).

Tất cả đều có điểm tốt và thương hiệu đặc biệt của riêng họ - Bất cứ khi nào ai đó hỏi tôi về các chương trình "giám sát quá trình" / "giám sát viên", tôi luôn hỏi cùng một câu hỏi: Tại sao bạn cần một?


-2

Không có công cụ đồng thuận / cộng đồng phổ biến nào cho việc này bởi vì tất cả những người đi theo con đường này đều nhận ra đó là một ngõ cụt. Nếu các quy trình chạy dài của bạn thất bại quá thường xuyên để giám sát đơn giản là đủ tốt, thì hãy ngừng sử dụng chúng và chuyển mã của bạn vào bên trong thứ gì đó sẽ được điều khiển nhiều sự kiện hơn.

chỉnh sửa: như Chris chỉ ra bên dưới đôi khi bạn hoàn toàn bị dồn vào chân tường, trong trường hợp đó, một công việc cron * / 1 tìm kiếm tiến trình / pidfile, chạy một khởi động / khởi động lại nếu nó bị thiếu và đưa ra kết quả trong email cho người chịu trách nhiệm nhà phát triển / quản lý sản phẩm là vị trí dự phòng của bạn.


3
Nói dễ hơn làm. ;-) Đôi khi bạn có các ứng dụng mà bạn buộc phải chạy, bất kể chúng có thể không ổn định hoặc tệ đến mức nào, và bất cứ điều gì bạn có thể làm để giữ cho chúng chạy sẽ giúp giảm 3 giờ gọi điện thoại. Không phải là lý tưởng, bằng mọi cách, nhưng đôi khi nó tốt như nó được.
Christopher Cashell

1
Câu trả lời này bỏ lỡ hai tính năng của người giám sát bộ xử lý: khả năng quản lý các nhóm quy trình dưới dạng một đơn vị và khả năng quản lý các phụ thuộc. Ví dụ: trang web của bạn có thể liên quan đến máy chủ web, máy chủ cơ sở dữ liệu và một số ứng dụng web chạy dưới dạng các quy trình bên ngoài. Các quy trình này có thể có các phụ thuộc - ví dụ: cơ sở dữ liệu cần phải được cập nhật trước ứng dụng web. Một người giám sát quy trình tốt sẽ cho phép bạn bắt đầu và dừng nhóm quy trình này bằng một lệnh duy nhất và sẽ đảm bảo rằng mọi thứ bắt đầu theo đúng thứ tự.
larsks

1
Trong một thế giới lý tưởng, mọi thứ sẽ hoạt động hoàn hảo. Thật không may, đây không chỉ là một thế giới lý tưởng.
Matt

Vấn đề không phải là thất bại quá thường xuyên. Vấn đề là thất bại mỗi tuần một lần và không được khởi động lại ngay lập tức . Đây không phải là một câu trả lời thực sự.
dan3

@ChristopherCashell đang đi đúng hướng. Sự giám sát bên trong một ứng dụng thường là quá kỹ thuật (và nó cũng không phải là Triết lý UNIX.) Phần mềm có thể được coi là luôn không hoàn hảo, bất kể có bao nhiêu nỗ lực chủ động được đổ vào để khắc phục mọi sự cố. Giám sát là một lớp riêng biệt, bên ngoài ... một chính sách bảo hiểm. Tốt hơn là giữ cho các dịch vụ sản xuất hoạt động bất kể là gì, ngay cả khi chúng "không được phép xảy ra sự cố", vì thực tế là sh% t xảy ra. Tôi muốn thay một dịch vụ khởi động lại, đăng nhập ngoại lệ và sửa nó vào buổi sáng. (
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.