Monit là một công cụ giám sát mã nguồn mở miễn phí cho Unix và Linux, có khả năng thực hiện bảo trì tự động, sửa chữa và chạy các hành động trong các tình huống lỗi.
Monit action
Monit cung cấp cho ta một số hành đông có thể thực hiện đối với mỗi giám sát
- Alert Gửi cảnh báo cho người dùng qua email
- RESTART Khởi động lại service VÀ gửi cảnh báo.
- START Khởi động service bằng cách gọi phương thức được khai báo trong config VÀ gửi cảnh báo
- STOP Dừng service bằng cách gọi phương thức được khai báo trong config VÀ gửi cảnh báo. Nếu monit stop một service, service đó sẽ không được monitor nữa và cũng không được tự khởi động lại. Muốn khởi động lại service, bạn phải khởi động bằng tay
- EXEC dùng để thực thi một chương trình VÀ gửi cảnh báo. Thường dùng để run một đoạn scripts
- UNMONITOR ngừng giám sát VÀ gửi cảnh báo
Cài đặt và sử dụng Monit
Vậy là chúng ta đã có cái nhìn tổng quan về Monit. Bây giờ, hãy thử cài đặt và sử dụng nó.
Install Monit
On RedHat/CentOS/Fedora/
yum install monit
On Ubuntu/Debian/Linux Mint
sudo apt-get install monit
Configuring Monit
Monit rất dễ cấu hình, trên thực tế, các file cấu hình khá dễ đọc vì nó khá sát với ngôn ngữ thông thường.
Mặc định, Monit giám sát các dịch vụ đang chạy trong mỗi 2 phút và ghi lại lịch sử vào file log được đặt tại: /var/log/monit.
Muốn sửa chu kì chạy monit, ta có thể sửa dòng này trong file config /etc/monit/monitrc
set daemon 120 # check services at 2-minute intervals
Monit có giao diện web của chạy trên cổng 2812. Để kích hoạt giao diện web, chúng ta cần thay đổi tệp cấu hình monit.
File cấu hình chính của monit nằm ở /etc/monit.conf
(RedHat / CentOS / Fedora) và /etc/monit/monitrc
cho (Ubuntu / Debian / Linux Mint). Mở file này lên và thay đổi như sau:
sudo vi /etc/monit/monitrc
tìm đến dòng config HTTPD
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
Khởi động monit:
sudo /etc/init.d/monit start
Và vào http://localhost:2812/, nhập usenamadmin
password monit
và xem kết quả
Giám sát Service với monit
Muốn giám sát một service, chúng ta cần thêm config vào file /etc/monit/monitrc
hoặc tạo một file config trong thư mục /etc/monit/conf.d/
(mặc định thư mục này được include trong config default của monit)
Bên dưới là một ví dụ về monitor Apache
vi /etc/monit/conf.d/apache
check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start" #khai báo cú pháp start service
stop program = "/etc/init.d/httpd stop" #khai báo cú pháp stop service
if total cpu > 60% for 2 cycles then alert
if total cpu > 80% for 5 cycles then restart
Với config này, Monit sẽ
- gửi một cảnh báo nếu Apache dùng vượt quá 60% CPU trong hai chu kỳ.
- khởi động lại Apache nếu mức sử dụng CPU trên 80% trong năm chu kỳ.
(Mỗi chu kì là 2 phút theo config set daemon 120
ở trên
Cú pháp của Monit khá là dễ đọc và dễ hiểu. Về cú pháp monit, bạn có thể tham khảo thêm tại https://mmonit.com/monit/documentation/monit.html#SERVICE-TESTS
Một số lệnh thường sử dụng
Kiểm tra cú pháp config Monitmonit -tRestart monit
/etc/init.d/monit restartKiểm tra monit log
tail -f /var/log/monit.log
Kiểm tra trạng thái monitor
monit status
Ứng dụng thực tế
Mongodb
check host mongodb with address localhoststart program = "/etc/init.d/mongodb start"if failed host 127.0.0.1 port 27017 protocol httpwith timeout 15 secondsthen restartalert vanlien129@gmail.com only on { timeout, nonexist }
PHP-FPM
Tạo file php-fpm trong thư mục /etc/monit/conf.d
Kiểm tra nếu dịch vụ không hoạt động sẽ tự restart lại
check process php7.4-fpm with pidfile /www/server/php/74/var/run/php-fpm.pidstart program = "/etc/init.d/php-fpm-74 restart"stop program = "/etc/init.d/php-fpm-74 stop"if failed unixsocket /tmp/php-cgi-74.sock then restartif 3 restarts within 5 cycles then timeout
Nhận xét
Đăng nhận xét