서버 모니터링 · 6 min read · Jan 06, 2026
우분투 16.04 LTS (제니얼 제루스)에서 Munin 및 Monit으로 서버 모니터링 - 2페이지
6 Monit 설치 및 구성
Monit을 설치하려면, 다음과 같이 합니다:
apt-get -y install monit이제 /etc/monit/monitrc를 편집해야 합니다. 기본 /etc/monit/monitrc에는 많은 예제가 있으며, 더 많은 구성 예제는 http://mmonit.com/monit/documentation/ 에서 찾을 수 있습니다. 그러나 제 경우에는 proftpd, sshd, mysql, apache 및 postfix를 모니터링하고 싶고, 포트 2812에서 Monit 웹 인터페이스를 활성화하고 싶으며, https 웹 인터페이스를 원하고, 사용자 이름 admin과 비밀번호 howtoforge로 웹 인터페이스에 로그인하고 싶으며, Monit이 root@localhost로 이메일 알림을 보내도록 하고 싶습니다. 그래서 제 파일은 다음과 같습니다 (다른 데몬에 대한 예제를 구성에 추가하여 파일을 필요에 맞게 조정할 수 있습니다):
cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
nano /etc/monit/monitrcset 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:howtoforge
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/sbin/service ssh start"
stop program "/usr/sbin/service ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
check process apache with pidfile /var/run/apache2/apache2.pid
group www
start program = "/usr/sbin/service apache2 start"
stop program = "/usr/sbin/service apache2 stop"
if failed host localhost 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 mysql with pidfile /var/run/mysqld/mysqld.pid
# group database
# start program = "/usr/sbin/service mysql start"
# stop program = "/usr/sbin/service mysql stop"
# if failed host 127.0.0.1 port 3306 then restart
# if 5 restarts within 5 cycles then timeout
#check process proftpd with pidfile /var/run/proftpd.pid
# start program = "/usr/sbin/service proftpd start"
# stop program = "/usr/sbin/service proftpd stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process postfix with pidfile /var/spool/postfix/pid/master.pid
# group mail
# start program = "/usr/sbin/service postfix start"
# stop program = "/usr/sbin/service postfix stop"
# if failed port 25 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process nginx with pidfile /var/run/nginx.pid
# start program = "/usr/sbin/service nginx start"
# stop program = "/usr/sbin/service nginx stop"
# if failed host 127.0.0.1 port 80 then restart
#
#check process memcached with pidfile /var/run/memcached.pid
# start program = "/usr/sbin/service memcached start"
# stop program = "/usr/sbin/service memcached stop"
# if failed host 127.0.0.1 port 11211 then restart
#
#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
# start program = "/usr/sbin/service pure-ftpd-mysql start"
# stop program = "/usr/sbin/service pure-ftpd-mysql stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process named with pidfile /var/run/named/named.pid
# start program = "/usr/sbin/service bind9 start"
# stop program = "/usr/sbin/service bind9 stop"
# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
# if failed host 127.0.0.1 port 53 type udp protocol dns then restart
# if 5 restarts within 5 cycles then timeout
#
#check process ntpd with pidfile /var/run/ntpd.pid
# start program = "/usr/sbin/service ntp start"
# stop program = "/usr/sbin/service ntp stop"
# if failed host 127.0.0.1 port 123 type udp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process mailman with pidfile /var/run/mailman/mailman.pid
# group mail
# start program = "/usr/sbin/service mailman start"
# stop program = "/usr/sbin/service mailman stop"
#
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/usr/sbin/service amavis start"
# stop program = "/usr/sbin/service amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap with pidfile /var/run/courier/imapd.pid
# group mail
# start program = "/usr/sbin/service courier-imap start"
# stop program = "/usr/sbin/service courier-imap stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-imap-ssl start"
# stop program = "/usr/sbin/service courier-imap-ssl stop"
# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid
# group mail
# start program = "/usr/sbin/service courier-pop start"
# stop program = "/usr/sbin/service courier-pop stop"
# if failed host localhost port 110 type tcp protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-pop-ssl start"
# stop program = "/usr/sbin/service courier-pop-ssl stop"
# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process dovecot with pidfile /var/run/dovecot/master.pid
# group mail
# start program = "/usr/sbin/service dovecot start"
# stop program = "/usr/sbin/service dovecot stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout구성 파일은 상당히 자명합니다; 옵션에 대해 확실하지 않은 경우 Monit 문서를 참조하십시오: http://mmonit.com/monit/documentation/monit.html
Monit 구성의 apache 부분에서 다음을 찾을 수 있습니다:
if failed host localhost port 80 protocol http
and request "/monit/token" then restart이는 Monit이 포트 80에서 localhost에 연결을 시도하고 /monit/token 파일에 접근하려고 시도한다는 것을 의미합니다. 이 파일은 /var/www/html/monit/token입니다. 우리의 웹사이트의 문서 루트가 /var/www/html이기 때문입니다. Monit이 성공하지 못하면 Apache가 실행되고 있지 않다는 의미이며, Monit은 이를 재시작할 것입니다. 이제 /var/www/html/monit/token 파일을 생성하고 그 안에 임의의 문자열을 작성해야 합니다:
mkdir /var/www/html/monit
echo "hello" > /var/www/html/monit/token다음으로, SSL 암호화된 Monit 웹 인터페이스에 필요한 pem 인증서 (/var/certs/monit.pem)를 생성합니다:
mkdir /var/certs
cd /var/certs인증서를 생성하기 위해 OpenSSL 구성 파일이 필요합니다. 다음과 같이 보일 수 있습니다:
nano /var/certs/monit.cnf# RSA 인증서 생성 - 서버
RANDFILE = ./openssl.rnd
[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = 국가 이름 (2자리 코드)
countryName_default = MO
stateOrProvinceName = 주 또는 지방 이름 (전체 이름)
stateOrProvinceName_default = 모니토리아
localityName = 지역 이름 (예: 도시)
localityName_default = 모니타운
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 1024 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 600 /var/certs/monit.pem마지막으로, Monit을 시작할 수 있습니다:
service monit restart이제 브라우저를 https://www.example.com:2812/로 이동시키고 (포트 2812가 방화벽에 의해 차단되지 않았는지 확인), admin과 howtoforge로 로그인하면 Monit 웹 인터페이스를 볼 수 있습니다. 다음과 같아야 합니다:

(메인 화면)

(시스템 상태 페이지)
/etc/monit/monitrc의 구성에 따라 monit는 서비스가 실패할 경우 서비스를 재시작하고 서비스의 프로세스 ID가 변경될 경우 알림 이메일을 보냅니다.
쉘에서 Monit 상태를 얻으려면 “monit status” 명령을 실행하십시오:
monit status이 명령은 모니터링되는 모든 서비스의 상태를 보여줍니다.

7 ISPConfig에서 Monit 구성하기
ISPConfig 서버 제어판은 모니터 모듈 내에서 Monit 데이터를 표시할 수 있습니다. ISPConfig에서 이 기능을 활성화하려면, 관리자(admin) 사용자로 ISPConfig에 로그인하고 시스템 > 서버 구성으로 이동하여 아래와 같이 Monit의 URL, 사용자 이름 및 비밀번호를 입력합니다.

8 링크
- munin: http://munin-monitoring.org/
- monit: http://mmonit.com/monit/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.