검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : How to Install and Setup Monit (Linux Process and Services Monitoring) Program

  Monit은 서버 프로세스, 파일, 디렉토리, 체크섬, 퍼미션, 파일시스템과 Apache, Nginx, MySQL, FTP, SSH, Sendmail 등 서비스를 모니터하고 관리하는 오픈 소스 툴입니다. 웹 인터페이스를 쓰고 있기 때문에 웹 서버가 필요하며 이를 이용해 시스템 상태를 보고, 프로세스를 제어할 수 있습니다.

Monit로 할 수 있는 것
  프로세스가 돌아가고 있지 않다면 시작할 수 있고, 반응이 없으면 재시작할 수 있으며, 자원을 많이 소모할 경우 중지할 수 있습니다. 또한 파일, 디렉토리, 파일시스템의 변화, 체크섬 변화, 파일 크기 변화, 타임스탬프의 변화를 감시할 수 있습니다. 그리고 원격 호스트의 TCP/IP 포트, 서버 프로토콜, ping을 감사하는 것도 가능합니다. 물론 자체적으로 로그를 기록하며 치명적인 에러와 복구 상태에 대해 경고합니다.


Monit 설치
  레드햇 계열의 경우 EPEL 저장소를 추가해야 합니다. 추가 후 yum으로 설치합니다.
# yum install monit
  데비안 계열은 apt-get으로 바로 설치합니다.
$ sudo apt-get install monit

Monit 설정
  기본적으로 2분마다 서비스를 검사하며 /var/log/monit 파일에 로그를 기록합니다. 웹 서버를 통해 2812 포트로 웹 인터페이스를 제공하며 이를 위해 monit 설정 파일을 수정해야 합니다. 주 설정 파일은 레드햇 계열의 경우 /etc/monit.conf, 데비안 계열의 경우 /etc/monit/monitrc 입니다. 이 파일 안에서 아래에 해당하는 부분의 주석을 제거하고 서버의 IP와 도메인을 입력합니다.
 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
  그 후 monit 서비스를 재시작하여 새 설정을 읽도록 합니다.
$ sudo /etc/init.d/monit start
  이제 http://주소:2812로 웹 인터페이스에 접속할 수 있습니다. 사용자명엔 admin, 패스워드엔 monit을 넣어 로그인하면 아래와 같은 화면을 볼 수 있습니다.

출처 : 참조 원문


서비스 추가
  웹 인터페이스의 작동을 확인하면 레드햇 계열의 경우 /etc/monit.conf, 데비안 계열의 경우 /etc/monit/monitrc 파일의 끝부분에 감시할 프로그램을 추가합니다. 아래는 기본적인 설정 예제입니다.

Apache
check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
Apache2
check process apache with pidfile /run/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program  = "/etc/init.d/apache2 stop"
Nginx
check process nginx with pidfile /var/run/nginx.pid
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
MySQL
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
SSH
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed host 127.0.0.1 port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

  감시할 프로그램에 대한 내용을 모두 추가한 후 아래 명령어로 틀린 부분이 없는지 확인합니다.
$ sudo monit -t
  이상이 없으면 서비스를 재시작합니다.
$ sudo /etc/init.d/monit restart
  로그 파일을 확인하여 서비스 시작에 문제가 없는지 확인할 수도 있습니다.
$ sudo tail -f /var/log/monit.log
[BDT Apr  3 03:06:04] info     : Starting monit HTTP server at [localhost:2812]
[BDT Apr  3 03:06:04] info     : monit HTTP server started
[BDT Apr  3 03:06:04] info     : 'tecmint.com' Monit started
[BDT Apr  3 03:06:04] error    : 'nginx' process is not running
[BDT Apr  3 03:06:04] info     : 'nginx' trying to restart
[BDT Apr  3 03:06:04] info     : 'nginx' start: /etc/init.d/nginx

출처 : 참조 원문

2013/07/12 10:45 2013/07/12 10:45