서버 모니터링 · 3 min read · Oct 17, 2025
서버 모니터링: munin과 monit을 이용한 Mandriva 2008.0 - 2페이지
4 monit 설치 및 구성
monit은 특정 Mandriva contrib_backports 저장소에서만 사용할 수 있는 것 같습니다. carroll.cac.psu.edu 저장소에서 발견했으므로 지금 활성화해야 합니다:
urpmi.addmedia contrib_backports ftp://carroll.cac.psu.edu/pub/linux/distributions/mandrivalinux/official/2008.0/i586/media/contrib/backports with media_info/hdlist.czhttp://easyurpmi.zarb.org의 도움을 받아 다른 contrib_backports 저장소를 시도할 수 있지만, monit이 포함되어 있지 않다면 선택한 contrib_backports 저장소를 다음과 같이 제거해야 합니다…
urpmi.removemedia contrib_backports… 그리고 다른 contrib_backports 저장소를 시도합니다.
그 후 monit을 설치합니다:
urpmi monitmonit의 기본 구성 파일은 /etc/monitrc이며, 여기에서 몇 가지 구성 예제를 찾을 수 있습니다(더 많은 구성 예제는 http://www.tildeslash.com/monit/doc/examples.php에서 찾을 수 있습니다) 모두 주석 처리되어 있습니다. 이제 해당 파일을 열고 마지막에 있는 include /etc/monit.d/* 줄의 주석을 제거합니다:
vi /etc/monitrc| [...] include /etc/monit.d/* [...] |
이것은 monit에게 /etc/monit.d 디렉토리에서도 구성 파일을 찾도록 지시합니다. 따라서 /etc/monitrc를 수정하는 대신 새로운 구성 파일 /etc/monit.d/monitrc를 생성합니다. 제 경우에는 proftpd, sshd, mysql, apache 및 postfix를 모니터링하고 싶으며, 포트 2812에서 monit 웹 인터페이스를 활성화하고 싶고, https 웹 인터페이스를 원하며, 사용자 이름 admin과 비밀번호 test로 웹 인터페이스에 로그인하고 싶고, monit이 root@localhost로 이메일 알림을 보내도록 하고 싶습니다. 그래서 제 파일은 다음과 같습니다:
vi /etc/monit.d/monitrc| set daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert root@localhost set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout 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 port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database 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 check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host www.example.com port 80 protocol http and request "/monit/token" then restart if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout |
(서버에 실제로 존재하는 프로세스만 확인하도록 하십시오 - 그렇지 않으면 monit가 시작되지 않습니다. 즉, monit에게 Postfix를 확인하라고 지시했지만 시스템에 Postfix가 설치되어 있지 않으면 monit가 시작되지 않습니다.)
구성 파일은 꽤 자명합니다; 옵션에 대해 확신이 없으면 monit 문서를 참조하십시오: http://www.tildeslash.com/monit/doc/manual.php
monit 구성의 apache 부분에서 다음을 찾을 수 있습니다:
| if failed host www.example.com port 80 protocol http and request "/monit/token" then restart |
이는 monit가 www.example.com의 포트 80에 연결을 시도하고 /monit/token 파일에 접근하려고 시도한다는 것을 의미합니다. 이 파일은 /var/www/www.example.com/web/monit/token입니다. 왜냐하면 우리의 웹 사이트의 문서 루트는 /var/www/www.example.com/web이기 때문입니다. monit가 성공하지 못하면 Apache가 실행되고 있지 않다는 의미이며, monit는 이를 재시작할 것입니다. 이제 /var/www/www.example.com/web/monit/token 파일을 생성하고 그 안에 임의의 문자열을 작성해야 합니다:
mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/monit/token다음으로 SSL 암호화된 monit 웹 인터페이스에 필요한 pem 인증서 (/var/certs/monit.pem)를 생성합니다:
mkdir /var/certs
cd /var/certs인증서를 생성하기 위해 OpenSSL 구성 파일이 필요합니다. 다음과 같이 보일 수 있습니다:
vi /var/certs/monit.cnf| # RSA 인증서 생성 - 서버 RANDFILE = ./openssl.rnd [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type [ req_dn ] countryName = 국가 이름 (2자리 코드) countryName_default = MO stateOrProvinceName = 주 또는 지방 이름 (전체 이름) stateOrProvinceName_default = Monitoria localityName = 지역 이름 (예: 도시) localityName_default = Monittown organizationName = 조직 이름 (예: 회사) organizationName_default = Monit Inc. organizationalUnitName = 조직 단위 이름 (예: 섹션) organizationalUnitName_default = 모니터링 기술 부서 commonName = 공통 이름 (서버의 FQDN) commonName_default = server.monit.mo emailAddress = 이메일 주소 emailAddress_default = [email protected] [ cert_type ] nsCertType = server |
이제 다음과 같이 인증서를 생성합니다:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pem마지막으로 monit를 시작할 수 있습니다:
/etc/init.d/monit start이제 브라우저를 https://www.example.com:2812/로 이동시키고(포트 2812가 방화벽에 의해 차단되지 않았는지 확인하십시오), admin과 test로 로그인하면 monit 웹 인터페이스를 볼 수 있습니다. 다음과 같아야 합니다:

(메인 화면)

(Apache 상태 페이지)
/etc/monit.d/monitrc의 구성에 따라 monit는 서비스가 실패할 경우 이를 재시작하고 서비스의 프로세스 ID가 변경되면 알림 이메일을 보냅니다.
즐기세요!
5 링크
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.