Mục lục:
- Bước 1: Sử dụng các phương pháp do Systemd cung cấp
- Bước 2: Định cấu hình và sử dụng tập lệnh của trình kiểm tra dịch vụ
- Bước 3: Kết luận
Video: Tập lệnh giám sát dịch vụ cho máy chủ Linux: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Có một hệ thống ổn định, luôn chạy, ngay cả khi bạn đang sử dụng Linux có thể là một nhiệm vụ khó khăn.
Do sự phức tạp của các gói phần mềm hiện đại và mã hóa kém, chắc chắn một số quy trình có thể gặp sự cố theo thời gian. Đây có thể là một điều tồi tệ nếu bạn đang chạy một máy chủ và một số người sử dụng các dịch vụ này.
Bước 1: Sử dụng các phương pháp do Systemd cung cấp
Như bạn có thể đã biết, hầu hết các hệ điều hành Linux hiện đại đang sử dụng systemd.
Nếu bạn không quen thuộc với systemd, thì đây là, theo wikipedia:
"… Một hệ thống init được sử dụng trong các bản phân phối Linux để khởi động không gian người dùng và quản lý tất cả các quy trình sau đó, thay vì các hệ thống init Hệ thống UNIX V hoặc Berkeley Software Distribution (BSD).…"
Nhiều người vẫn đang tranh cãi tại sao cần phải thay thế hệ thống init cũ tốt bằng hệ thống quản lý quy trình phức tạp hơn này, nhưng trên liên kết sau, người ta có thể tìm thấy một lời giải thích tốt:
www.tecmint.com/systemd-replaces-init-in-l…
Cải tiến quan trọng nhất là nó có thể khởi động hệ thống nhanh hơn init, do xử lý đồng thời và song song khi khởi động thay vì cách tiếp cận tuần tự của init
Nếu không đi sâu vào systemd, để thêm một quy trình vào systemd, bạn phải tạo một tệp dịch vụ. Cú pháp của một tệp như vậy có thể từ rất đơn giản đến cực kỳ phức tạp và chúng tôi sẽ không đi vào chi tiết. Để có một tệp.service cơ bản, chỉ cần sử dụng các mục sau:
[Unit] Description = Mô tả ứng dụngDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart = / usr / sbin / applicationExecReload = / usr / sbin / application reloadExecStop = / usr / sbin / application stopRestart = always [Cài đặt] WantedBy = multi-user.target
Đặt chúng vào tệp application.service trong thư mục / lib / systemd / system.
Những gì mỗi tùy chọn này làm được giải thích trong liên kết sau:
access.redhat.com/documentation/en-US/Red_…
Trong oder để bắt đầu ứng dụng của bạn, hãy đưa ra lệnh sau:
sudo systemctl start application.service
Lưu ý: có thể bỏ qua phần mở rộng.service.
Để dừng ứng dụng:
sudo systemctl dừng application.service
Nếu tệp cấu hình đã được thay đổi và bạn muốn tải lại cài đặt:
sudo systemctl tải lại application.service
Để khởi động lại ứng dụng:
sudo systemctl khởi động lại application.service
Để kích hoạt tính năng tự động khởi động khi khởi động:
sudo systemctl kích hoạt application.service
Nếu điều này được bật, thì trình quản lý quy trình systemd sẽ cố gắng khởi động ứng dụng dựa trên cài đặt được cung cấp bởi tệp hệ thống.
Để vô hiệu hóa nó, sử dụng lệnh tương tự như trên, nhưng với tham số 'vô hiệu hóa'.
Nếu bạn đặt Restart = always trong tệp dịch vụ, thì systemd sẽ theo dõi quá trình và nếu không thể tìm thấy nó trong danh sách quá trình, nó sẽ cố gắng khởi động lại tự động.
Nếu bạn đặt
RestartSec = 30
sau lệnh khởi động lại, nó sẽ đợi 30 giây trước khi cố gắng khởi động lại quá trình. Điều này có thể hữu ích, vì nỗ lực khởi động lại liên tục của một dịch vụ / ứng dụng bị lỗi có thể dẫn đến nhu cầu cao trên hệ thống (ghi nhật ký lỗi, v.v.)
Như bạn có thể thấy, systemd đã cung cấp một số phương tiện để giám sát các quy trình. Tuy nhiên, trong một số trường hợp, điều này có thể không đủ. Điều gì sẽ xảy ra nếu một tiến trình không thoát (nó sẽ vẫn nằm trong danh sách tiến trình), nhưng nó ngừng phản hồi. Trong trường hợp này, để đảm bảo rằng một quy trình thực sự đang hoạt động, bạn có thể cần thực hiện các kiểm tra bổ sung.
Đây là nơi mà các tập lệnh từ hướng dẫn này sẽ có ích.
Bước 2: Định cấu hình và sử dụng tập lệnh của trình kiểm tra dịch vụ
Nếu bạn cần kiểm soát nhiều hơn các quy trình / dịch vụ đang chạy của mình, chắc chắn những tập lệnh này sẽ hữu ích.
Vì mã hơi lớn, nó được tải lên github và có thể được tìm thấy trong kho lưu trữ sau:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
'Trái tim' của toàn bộ gói là
checkService.sh
Trước khi sử dụng nó, bạn phải thay thế đường dẫn đầy đủ đến thư mục dịch vụ. Điều này có thể được tìm thấy ở phần đầu của script.
Tập lệnh có thể giám sát một số quy trình và thực hiện tác vụ bổ sung, như được mô tả bên dưới:
Nó đi qua từng tệp từ thư mục con / services có phần mở rộng.serv hoặc.check và sẽ kiểm tra xem có quá trình đang hoạt động được gọi là 'ứng dụng' hay không.
Nếu không có tệp '.check' cho một ứng dụng, chỉ có tệp application.serv:
Nếu quá trình đang hoạt động, nó sẽ coi quá trình là đang hoạt động
Nếu quá trình không hoạt động, thì nó sẽ khởi động lại dịch vụ bằng cách nhập lệnh sau:
ứng dụng khởi động lại systemctl
nếu tệp.serv trống!
Nếu tệp.serv không trống và có quyền thực thi, nó sẽ cố gắng chạy nó dưới dạng tập lệnh BASH thuần túy.
Điều này rất hữu ích nếu bạn phải thực hiện thêm việc gì đó ngoài việc khởi động lại dịch vụ.
Ví dụ: trong tệp spamd.serv, từ repo ở trên, trong trường hợp dịch vụ spamd đã chết, dịch vụ spamassassin cần được khởi động lại thay vào đó, dịch vụ này cũng sẽ khởi động lại spamd. Chỉ khởi động lại spamd sẽ không đủ.
Người ta có thể chỉnh sửa nội dung của một tệp serv như vậy theo nhu cầu.
Một ví dụ khác là tệp pcscd.serv. Trong trường hợp này, một số tiến trình khác cũng bị khởi động lại / bị giết.
Nếu có một tệp kiểm tra, sau khi kiểm tra nếu tiến trình đang chạy, nó cũng sẽ chạy tệp kịch bản này để thực hiện kiểm tra bổ sung.
Ví dụ: đối với dịch vụ oscam, chúng tôi đã tạo một tệp kiểm tra cố gắng kết nối với giao diện web của nó để xem nó có thành công hay không. Nếu không, thì, mặc dù quá trình đang hoạt động, dịch vụ không phản hồi và cần được khởi động lại. Việc khởi động lại dịch vụ phải được thực hiện / được gọi bởi chính tệp.check.
Một ví dụ khác là dịch vụ DLNA trung gian.
Đây là một máy chủ nhỏ cung cấp nội dung video / âm thanh cho các máy khách DLNA và tự phát trên mạng. Đôi khi dịch vụ bị treo và không thể khám phá được nữa, nhưng quá trình này sẽ vẫn hoạt động. Để kiểm tra xem dịch vụ có thể khám phá hay không, tiện ích CLI có tên là gssdp-explore đã được sử dụng. Toàn bộ mã kiểm tra máy chủ DLNA được đặt bên trong một tập lệnh mediatomb.check.
Đây chỉ là một vài ví dụ về cách bạn có thể sử dụng các tệp.serv và.check.
Để theo dõi một dịch vụ mới, bạn phải tạo một.serv và nếu cần cũng có một tệp kiểm tra và viết tập lệnh tương ứng bên trong chúng.
Nếu chỉ kiểm tra sự hiện diện của quá trình nếu đủ, thì một tệp.serv trống sẽ là đủ. Nếu phải thực hiện các kiểm tra bổ sung, thì tệp.check phải được tạo và một tập lệnh nhỏ phải được viết để thực hiện công việc.
Đối với phiên bản Cource, tập lệnh.sh phải được chạy định kỳ, do đó, một công việc cron cũng phải được tạo cho nó:
#check các dịch vụ đang chạy cứ sau 5 phút * / 5 * * * * /var/bin/ServiceCheck/checkService.sh> / dev / null
Bước 3: Kết luận
Tôi hy vọng bạn sẽ thấy gói này hữu ích vì nó có thể rất đơn giản trong việc giám sát các quy trình Linux và hy vọng sẽ giảm thiểu thời gian ngừng hoạt động của các dịch vụ của bạn.
Hãy tải các tập lệnh bổ sung lên github nếu bạn tạo các tập lệnh mới. Chỉ cần cho tôi biết và tôi sẽ thêm bạn làm cộng tác viên.
Đề xuất:
SilverLight: Giám sát môi trường dựa trên Arduino cho phòng máy chủ: 3 bước (có hình ảnh)
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ: Một lần tôi được giao nhiệm vụ tìm kiếm một đầu dò môi trường để theo dõi nhiệt độ trong phòng máy chủ của công ty tôi. Ý tưởng đầu tiên của tôi là: tại sao không chỉ sử dụng Raspberry PI và cảm biến DHT, nó có thể được thiết lập trong vòng chưa đầy một giờ bao gồm cả hệ điều hành
Tiêm chủng hay không? Dự án Quan sát khả năng miễn dịch của đàn gia súc thông qua mô phỏng dịch bệnh: 15 bước
Tiêm chủng hay không? Dự án Quan sát khả năng miễn dịch của đàn thông qua mô phỏng dịch bệnh: Tổng quan về dự án: Dự án của chúng tôi khám phá khả năng miễn dịch của đàn và hy vọng khuyến khích mọi người tiêm phòng để giảm tỷ lệ nhiễm bệnh trong cộng đồng của chúng tôi. Chương trình của chúng tôi mô phỏng cách một căn bệnh lây nhiễm sang một quần thể với các tỷ lệ tiêm chủng khác nhau
Tăng cường dịch vụ SSL trên máy chủ web của bạn (Apache / Linux): 3 bước
Tăng cường dịch vụ SSL trên máy chủ web của bạn (Apache / Linux): Đây là một hướng dẫn rất ngắn liên quan đến một khía cạnh của an ninh mạng - điểm mạnh của dịch vụ ssl trên máy chủ web của bạn. Cơ sở là các dịch vụ ssl trên trang web của bạn được sử dụng để đảm bảo rằng không ai có thể hack dữ liệu đang được transmi
Thiết lập để lập trình Picaxe thông qua tập lệnh Shell (linux): 5 bước
Thiết lập để lập trình một Picaxe Thông qua Tập lệnh Shell (linux): Hướng dẫn đơn giản hướng dẫn cách tạo một tập lệnh shell sẽ tải một chương trình từ một trang web ftp, sau đó biên dịch nó rồi tải xuống picaxe. (Đây cũng là lần đầu tiên của tôi có thể hướng dẫn)
AVRSH: Vỏ thông dịch lệnh cho Arduino / AVR.: 6 bước (có hình ảnh)
AVRSH: Lớp vỏ thông dịch lệnh cho Arduino / AVR: Đã từng muốn " đăng nhập " cho vi điều khiển AVR của bạn? Bạn từng nghĩ sẽ thật tuyệt khi " con mèo " một đăng ký để xem nội dung của nó? Bạn đã luôn muốn có một cách để bật và tắt các hệ thống phụ ngoại vi riêng lẻ của A