Quản Trị  Hệ Điều Hành Linux - Unix
 
Kiểm tra file, service và restart service khi cần thiết với Monit
10:21 | 10/04/2010

Monit là dịch vụ kiểm tra trạng thái của file bằng cách kiểm tra checksum, theo dõi hoạt động của các dịch vụ chạy trên nền Linux, đưa ra cảnh báo, stop/start dịch vụ nếu dịch vụ sử dụng tài nguyên quá mức cho phép, hoặc một dịch vụ nào đó đột nhiên stop vì một lí do nào đó.
Vì công cụ này đa năng, dễ sử dụng và kiêm khá nhiều việc mà một Linux System Administrator cần làm, nhất là đối với những máy chủ chạy dịch vụ nặng nề.

Các bạn có thể đọc trước tut này ở Cybercitiz:
http://www.cyberciti.biz/tips/howto-monitor-and-restart-linux-unix-service.html
Ngoài ra bạn cũng có thể đọc một bài khá hay, về gom log của server, kiểm tra trạng thái file, bạn nào muốn tham khảo có thể đọc ở đây:

http://www.hvaonline.net/hvaonline/posts/list/14855.hva

Nếu đang làm việc với một server chạy website với lượt truy cập tương đối lớn, vả lại phần code không được hoàn hảo lắm, việc truy xuất cơ sở dữ liệu kém cho nên, mysql làm việc quá sức cho phép, dịch vụ này liên tục chiếm nhiều cpu và khi vượt quá giới hạn cho phép, server sẽ die theo. Và nếu không chuyên về code, vả lại không phải là người chịu trách nhiệm website, việc cần thiết là làm sao lúc ta không thường trực bên server, dịch vụ nào đó ra đi thì vẫn có cách làm cho nó sống lại một cách tự động. Cũng có thể dùng một bash shell để kiểm tra dịch vụ, bạn có thể đọc ở đây:
http://bash.cyberciti.biz/web-server/restart-apache2-httpd-shell-script/

Bài viết trên hướng dẫn bạn viết một shell script để monitor process httpd, nếu phát hiện process này không hoạt động thì lập tức restart dịch vụ. Giải pháp này cũng đáng sử dụng, tuy nhiên không linh động, và bền bỉ như monit. Vả lại với việc viết một shell script, sử dụng cron job…và việc sử dụng một ứng dụng “chuyên dụng”, ta nên chọn cách sau hơn.

Monit là một ứng dụng viết ra cho các hệ điều hành *Nix và unix like, theo thông tin ở trang chủ : http://www.tildeslash.com/monit/ thì monit làm viêc tốt với hầu hết các hệ điều hành Linux. Bài này tôi hướng dẫn bạn cách cài đặt và sử dụng Monit trên Centos 5.2, tương tự với redhat, fedora… Ngoài ra cũng đá một chút sang Debian/Ubuntu (2 OSes này thì đơn giản hơn).

1.Cài đặt:

Monit phiên bản stable hiện tại là 4.10.1, bạn có thể vào trang chủ để tìm hiểu thêm, download và cài đặt:

$ cd /tmp

$ wget http://mmonit.com/monit/dist/monit-4.10.1.tar.gz

$ su
Password: Gõ password của bạn vào

# tar xvf monit-4.10.1.tar.gz

# cd monit-4.10.1

# sh ./configure

Bước này có thể một vài bạn sẽ gặp lỗi tương tự:

sh ./configure
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… configure: error: cannot run C compiled programs.
If you meant to cross compile, use `–host’.
See `config.log’ for more details.

Ta kiểm tra xem /tmp có bị mount với option noexec không? Lỗi trên chủ yếu do nguyên nhân này:
# mount
/dev/sda5 on / type ext3 (rw,usrquota)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda8 on /tmp type ext3 (rw,noexec,nosuid)
/dev/sda7 on /home type ext3 (rw,usrquota)
/dev/sda3 on /usr type ext3 (rw,usrquota)
/dev/sda2 on /var type ext3 (rw,usrquota)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/tmp on /var/tmp type none (rw,noexec,nosuid,bind)

Chú ý /tmp được mount ở /etc/fstab với option noexec, để khắc phục lỗi này, bạn sửa lại /etc/fstab và restart. Nhưng không nên, option trên để bảo mật cho hệ thống, ta chỉ cần move file down về tới một thư mục khác có quyền rw, exec là được.

# make & make install

Những bước compile trên là cơ bản khi sử dụng Linux, nếu muốn học về linux, bạn nên tập làm quen dần với các bước compile từ source.

Tiếp theo copy file cấu hình của Monit vào nơi nào đó cho dễ dàng quản lí:

# cp monitrc /etc/monitrc

Với Debian/Ubuntu, đã có sẵn gói deb, bạn cài đặt bằng lệnh apt-get install

$ sudo apt-get install monit
Thế là xong.

2.Cấu hình:

File cấu hình bạn chuyển vào thư mục /etc ở trên, mở nó ra

# nano /etc/monitrc

tìm dòng

#set daemon 120

Bỏ dấu “#” ở trước, dòng này có ý nghĩa: đặt Monit như một daemon, kiểm tra 2 phút một lần dịch vụ, file nào bạn chỉ định, giá trị này tính bằng giây, nếu muốn tăng hay giảm thì bạn có thể thay đổi 60, 180, 240…
Tiếp theo tìm dòng:
# set logfile syslog facility log_daemon
Bỏ dấu “#” trước nó, dòng này chỉ định syslog ghi lại hoạt động của daemon này, LOG-USer là facility theo mặc định.

Tìm set mailserver, bỏ “#” và thêm vào cho đúng với cấu hình mailserver của bạn

set mailserver mail.opensource.com.vn
set alert
whatvn@opensource.com.vn

Nguyễn Thăng Long (Kenhgiaiphap.vn)


Địa chỉ email này đã được bảo vệ từ spam bots, bạn cần kích hoạt Javascript để xem nó.


Tất cả những dòng còn lại bạn xoá trắng.

Tôi sẽ demo với mysql và kiểm tra việc thay đổi access_log. Kiểm tra mysql vì dịch vụ này thường xuyên làm hệ thống trì trệ do chiếm quá nhiều tài nguyên, kiểm tra access_log là về vấn đề bảo mât, tôi muốn kiểm tra để chắc chắn rằng không ai thay đổi file này.

Với mysql tôi set như sau
#Auto monitor mysql’s pid file and restart when needed
check process mysql with pidfile “/var/lib/mysql/mysql.pid”
start = “/etc/init.d/mysql start”
stop = “/etc/init.d/mysql stop”
if cpu usage > 80% for 2 cycles then restart
if 2 restarts within 3 cycles then timeout


Dòng 1: Tôi chỉ định kiểm tra process của mysql và cho Monit biết process này là process nào, để kiểm tra mysql sử dụng process nào (hệ thống của bạn hoàn toàn có thể khác của tôi), bạn dùng câu lệnh

$ ps -ef | grep mysql

Dòng thứ 2,3: Chỉ định Monit sử dụng init script nào để start, stop mysql (của bạn có thể là mysqld).

Dòng 4: Nếu pid file trên sử dụng cpu vượt quá 80% trong liên tục 2 lần check (240s) thì monit tự động restart dịch vụ này
Dòng 5: Nếu dịch vụ này liên tục sử dụng cpu vượt quá 80% và Monit phải restart quá 3 lần, thì Monit không kiểm tra dịch vụ này nữa, restart liên tục trong thời gian quá ngắn, xem như không cần, bởi vì người dùng cũng không thể truy xuất được website nếu mysqld cứ stop/start

Để kiểm tra access_log, tôi sử dụng:

check file access_log with path /var/log/access_log
if changed checksum then alert
alert
whatvn@opensource.com.vn

Nguyễn Thăng Long (Kenhgiaiphap.vn)

 
Ý kiến phản hồi và bình luận Góp ý kiến của bạn

support

anh support em với: khi em dùng cú pháp monit -t để test file control thì nó báo lỗi permission " monit: The control file ''/etc/monitrc'' must have permissions no more than -rwx (0700) right now permissions are -rwxrwxrwx (0777)." Em change quyền 777 vẫn báo lỗi như trên ? Tài liệu của anh e ko thấy start service nó từ bước nào cả ? Thanks anh support ^^

(hoang viet)
Các tin mới nhất :
- Thiết lập 1 hệ thống High-availability - Loadbalancing và Reverse Proxy cho Web Server trên CentOS 6/RHEL Sử dụng HAProxy và Keepalived
- Đồng bộ hóa dữ liệu giữa hai Server Ubuntu 11.10 sử dụng Unison.
- Bảo vệ thư mục web với mod_auth_mysql trên Apache2
- Tích hợp MailScanner - ClamAV - SpamAssassin - SquirrelMail vào PostfixTrên Centos 5.7
- Cài đặt rsnapshot trên CentOS
- Xây dựng hệ thống NAS Cluster sử dụng OpenFiler
- Cài đặt Nginx trên Ubuntu 11.10
- Thiết lập hệ thống Active/active Samba CTDB Cluster sử dụng GFS & DRBD Trên Centos 5.7 X86_64
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần3)
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần2)
Các tin liên quan :
- Tối ưu và tăng tốc PHP với XCache !
- Thiết lập Openvpn trên Server Linux
- Thiết lập tường lửa Iptables cho Linux - Phần 1
Bài nhiều người đọc cùng chuyên mục
Thiết lập 1 hệ thống High-availability - Loadbalancing và Reverse Proxy cho Web Server trên CentOS 6/RHEL Sử dụng HAProxy và Keepalived
 
Cài đặt Nginx trên server CentOS 6 x86_64 với PHP5 hỗ trợ qua PHP – FPM và MySQL.
 
Cấu hình ftp server với vsftpd
 
Quản lý đĩa trên linux dùng kỹ thuật LVM (Phần 1)
 
Cài Đặt Web Server (LAMP )Trên Centos 6 X86_64
 
Cài đặt và cấu hình Server Linux CentOS hoàn chỉnh (Phần 1)
 
Cài đặt công cụ giám sát web server apache
 
Trang chủ | Giới thiệu | Quảng cáo | Liên hệ
Giấy phép ICP số 199/GP-TTĐT. Bộ Thông tin và Truyền thông cấp.
Cơ quan quản lý  : Công Ty Cổ Phần Kênh Giải Pháp
Bản quyền © 2010-2011 Kenhgiaiphap.vn . Giữ toàn quyền.
Ghi rõ nguồn "Kenhgiaiphap.vn" khi phát hành lại thông tin từ website này.

return false; });