Monit - Linux 시스템 관리 및 모니터링을 위한 도구


Monit은 UNIX/Linux에서 Apache, Nginx, MySQL, FTP, SSH, SMTP 등과 같은 프로세스, 파일, 디렉토리, 체크섬, 권한, 파일 시스템 및 서비스를 자동으로 모니터링하고 관리하는 무료 오픈 소스이자 매우 유용한 도구입니다. 기반 시스템이며 시스템 관리자에게 우수하고 유용한 모니터링 기능을 제공합니다.

monit에는 기본 HTTP(S) 웹 서버를 사용하거나 명령줄 인터페이스를 통해 시스템 상태를 직접 확인하고 프로세스를 설정할 수 있는 사용자 친화적인 웹 인터페이스가 있습니다. 즉, monit 웹 인터페이스에 액세스하고 보려면 시스템에 Apache 또는 Nginx와 같은 웹 서버가 설치되어 있어야 합니다.

[ 당신은 또한 좋아할 수도 있습니다: Linux 성능을 모니터링하는 20가지 명령줄 도구 ]

Monit는 실행 중이 아닌 경우 프로세스를 시작하고 응답하지 않는 경우 프로세스를 다시 시작하며 많은 리소스를 사용하는 경우 프로세스를 중지하는 기능이 있습니다. 또한 Monit를 사용하여 변경, 체크섬 변경, 파일 크기 변경 또는 타임스탬프 변경에 대해 파일, 디렉토리 및 파일 시스템을 모니터링할 수도 있습니다.

Monit을 사용하면 원격 호스트의 TCP/IP 포트, 서버 프로토콜 및 핑을 모니터링할 수 있습니다. Monit은 자체 로그 파일을 유지하고 모든 심각한 오류 조건 및 복구 상태에 대해 경고합니다.

이 기사는 Debian 기반 Linux 배포판에서 Monit 설치 및 구성에 대한 간단한 가이드를 설명하기 위해 작성되었습니다.

1단계: Linux에 Monit 설치

기본적으로 Monit 모니터링 프로그램은 기본 시스템 기본 리포지토리에서 사용할 수 없으므로 CentOS, Rocky Linux 및 AlmaLinux와 같은 RHEL 기반 배포에서 monit 패키지를 설치하려면 타사 epel 리포지토리를 추가하고 활성화해야 합니다.

--------- On RHEL 9 based Systems --------- 
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm 

--------- On RHEL 8 based Systems --------- 
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

--------- On RHEL 7 based Systems ---------
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

epel 저장소를 추가했으면 다음 yum 명령을 실행하여 Monit 패키지를 설치합니다.

# yum install monit
OR
# dnf install monit  [On Fedora Linux]

Ubuntu/Debian/Linux Mint 사용자의 경우 그림과 같이 apt 명령을 사용하여 쉽게 설치할 수 있습니다.

$ sudo apt install monit

2단계: Linux에서 Monit 구성

Monit는 구성하기가 매우 쉽습니다. 사실 구성 파일은 매우 쉽게 읽을 수 있고 사용자가 더 쉽게 이해할 수 있도록 만들어졌습니다. 2분마다 실행 중인 서비스를 모니터링하고 \/var/log/monit\에 로그를 유지하도록 설계되었습니다.

Monit에는 웹 서버를 사용하여 포트 2812에서 실행되는 웹 인터페이스가 있습니다. 웹 인터페이스를 활성화하려면 monit 구성 파일을 변경해야 합니다.

monit의 기본 설정 파일은 (RedHat/CentOS/Fedora)의 /etc/monit.conf에 있고 (Ubuntu/Debian/Linux Mint)의 경우 /etc/monit/monitrc 파일입니다.

선택한 편집기를 사용하여 이 파일을 엽니다.

# vi /etc/monitrc
Or
$ sudo nano /etc/monit/monitrc

다음으로, 다음 섹션의 주석을 제거하고 서버의 IP 주소 또는 도메인 이름을 추가하고, 누구나 monit 사용자 및 비밀번호를 연결하고 변경할 수 있도록 허용하거나 기본 항목을 사용할 수 있습니다.

set httpd port 2812 and
     use address 0.0.0.0  # only accept connections from localhost
     allow 0.0.0.0/0        # 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 서비스를 시작하고 활성화하고 확인하여 새 구성 설정을 다시 로드해야 합니다.

# systemctl start monit
# systemctl enable monit
# systemctl status monit

이제 다음 URL로 이동하여 monit 웹 인터페이스에 액세스할 수 있습니다.

http://localhost:2812
OR
http://ip-address:2812
Or
http://example.com:2812

그런 다음 사용자 이름을 \admin\으로, 암호를 \monit\로 입력합니다. 아래와 같은 화면이 나와야 합니다.

3단계: 모니터링 모니터링에 Linux 서비스 추가

monit 웹 인터페이스가 올바르게 설정되면 모니터링하려는 프로그램을 (RedHat/CentOS/Fedora) 아래의 /etc/monitrc 및 (Ubuntu/Debian/Linux Mint)에 대한 /etc/monit/monitrc 파일에 추가하기 시작합니다. 하단에.

다음은 monit에 대한 몇 가지 유용한 구성 예입니다. 이는 서비스가 어떻게 실행되고 있는지, 어디에서 프로필을 유지하는지, 서비스를 시작 및 중지하는 방법 등을 확인하는 데 매우 유용할 수 있습니다.

check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/usr/bin/systemctl httpd start"
stop program = "/usr/bin/systemctl httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
check process apache with pidfile /run/apache2.pid
start program = "/usr/bin/systemctl apache2 start" with timeout 60 seconds
stop program  = "/usr/bin/systemctl apache2 stop"
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/bin/systemctl nginx start"
stop program = "/usr/bin/systemctl nginx stop"
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/usr/bin/systemctl mysqld start"
stop program = "/usr/bin/systemctl mysqld stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/bin/systemctl sshd start"
stop program "/usr/bin/systemctl sshd stop"
if failed host 127.0.0.1 port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

모니터링을 위해 모든 프로그램을 구성했으면 monit 구문에서 오류를 확인하십시오. 오류가 발견되면 수정하면 무엇이 잘못되었는지 파악하는 것은 그리 어렵지 않습니다. \제어 파일 구문 확인\과 같은 메시지가 표시되거나 오류가 표시되지 않으면 계속 진행할 수 있습니다.

# monit -t
Or
$ sudo monit -t

가능한 모든 오류를 수정한 후 다음 명령을 입력하여 monit 서비스를 시작할 수 있습니다.

# systemctl monit restart
OR
$ sudo systemctl monit restart

모니터링을 위해 모든 Linux 서비스를 추가한 후의 모습입니다.