서버 모니터링 · 16 min read · Nov 09, 2025
Rocky Linux 9에 Nagios 설치 및 구성 방법

Nagios는 인기 있는 오픈 소스 모니터링 시스템 중 하나로, 매우 강력합니다. IT 인프라를 모니터링하고 네트워크, 서버, 애플리케이션 및 프로세스가 원활하게 작동하도록 유지합니다. 모니터링 시스템을 통해 문제를 사전에 감지하고 신속하게 수정하여 비용과 다운타임을 절감할 수 있습니다.
이 튜토리얼에서는 Rocky Linux 9 서버에 Nagios를 설치하고 구성하는 방법을 배웁니다. 또한 기본 구성을 수행하고 원격 호스트를 모니터링할 수 있는 Nagios Remote Plugin Executor (NPRE)를 설치합니다.
필수 조건
- Rocky Linux 9를 실행하는 서버.
- 루트 권한이 있는 비 sudo 사용자.
- SELinux가 비활성화되어 있습니다. 이 튜토리얼에서는 SELinux를 활성화한 상태에서도 문제가 발생하지 않지만, 사용하는 Nagios 모니터에 따라 SELinux를 구성해야 하거나 비활성화 상태로 유지하는 것이 좋습니다.
- 모니터링하려는 다른 Rocky Linux 9 서버.
- 모든 것이 업데이트되었는지 확인합니다.
$ sudo dnf update
1단계 - 방화벽 구성
첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux 서버는 Firewalld 방화벽을 제공합니다.
방화벽이 실행 중인지 확인합니다.
$ sudo firewall-cmd --state
다음과 같은 출력을 얻어야 합니다.
running
현재 허용된 서비스/포트를 확인합니다.
$ sudo firewall-cmd --permanent --list-services
다음과 같은 출력을 보여야 합니다.
dhcpv6-client mdns ssh
HTTP 및 HTTPS 포트를 허용합니다.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
방화벽 상태를 다시 확인합니다.
$ sudo firewall-cmd --permanent --list-services
유사한 출력을 볼 수 있어야 합니다.
dhcpv6-client http https mdns ssh
방화벽을 다시 로드합니다.
$ sudo firewall-cmd --reload
2단계 - Apache 및 PHP 설치
Nagios를 실행하려면 Apache와 PHP가 설치되어 있어야 합니다.
Apache 서비스를 설치하고 활성화합니다.
$ sudo dnf install httpd
$ sudo systemctl enable httpd
PHP를 설치하기 위해 Remi 리포지토리를 사용할 것입니다. Remi Repo를 설치하고 PHP 8.1을 활성화합니다.
$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1 -y
PHP 및 여러 일반 PHP 모듈을 설치합니다.
$ sudo dnf install -y php php-gd php-curl
PHP 설치를 확인합니다.
$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies
PHP를 활성화하고 서비스를 시작합니다.
$ sudo systemctl enable --now php-fpm
변경 사항을 적용하기 위해 Apache 서비스를 재시작합니다.
$ sudo systemctl restart httpd
Apache 설치자가 생성한 /var/www/html 디렉토리에 info.php 파일을 생성하여 Apache와 PHP 설치를 확인할 수 있습니다.
$ sudo nano /var/www/html/info.php
편집기에 다음 코드를 붙여넣습니다.
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
브라우저에서 http:// URL을 열면 다음 페이지가 표시됩니다.

3단계 - Nagios 설치
이 튜토리얼의 대부분은 기본 서버에서 설치하고 작업해야 합니다.
종속성 설치
이 튜토리얼에서는 Nagios와 그 플러그인을 소스에서 빌드해야 합니다. 따라서 먼저 몇 가지 개발 라이브러리를 설치해야 합니다. EPEL 리포지토리도 필요하지만, 이전 단계에서 Remi 리포지토리와 함께 자동으로 설치되었으므로 여기서는 건너뛰어도 됩니다.
$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel unzip wget gettext autoconf net-snmp-utils postfix automake perl-Net-SNMP
Nagios 다운로드
Nagios의 GitHub 릴리스 페이지에서 최신 버전을 다운로드합니다. 이 튜토리얼 시점에서 4.4.10이 최신 버전입니다. 다른 버전을 원할 경우 명령을 수정하세요.
$ cd ~
$ sudo wget -O nagios.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.10/nagios-4.4.10.tar.gz
tar 파일을 추출합니다.
$ sudo tar zxf nagios.tar.gz
추출된 디렉토리를 /usr/src 디렉토리로 이동합니다.
sudo mv nagios-4.4.10 /usr/src/nagios
/usr/src/nagios 디렉토리로 전환합니다.
$ cd /usr/src/nagios
Nagios 컴파일
다음 단계는 소스 파일에서 Nagios를 컴파일하는 것입니다. configure 스크립트를 실행하여 모든 종속성이 존재하는지 확인합니다.
$ sudo ./configure
스크립트가 성공적으로 완료된 후 유사한 출력을 얻어야 합니다.
* Configuration summary for nagios 4.4.10 2023-01-17 *:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: /run/nagios.lock
Check result directory: /usr/local/nagios/var/spool/checkresults
Init directory: /lib/systemd/system
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /usr/sbin/sendmail
Host OS: linux-gnu
IOBroker Method: epoll
Web Interface Options:
------------------------
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP):
Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs.
컴파일을 시작합니다.
$ sudo make all
Nagios 사용자 및 그룹 생성
Nagios 프로세스를 실행할 새 사용자 및 그룹을 생성합니다.
$ sudo make install-groups-users
다음과 같은 출력을 볼 수 있어야 합니다.
groupadd -r nagios
useradd -g nagios nagios
apache 사용자를 nagios 그룹에 추가합니다.
$ sudo usermod -a -G nagios apache
Nagios 바이너리 설치
다음 명령을 실행하여 Nagios 바이너리, CGI 및 HTML 파일을 설치합니다.
$ sudo make install
외부 명령 디렉토리 생성
Nagios는 외부 애플리케이션에서 명령을 처리할 수 있으며, 이를 위해 디렉토리를 설정해야 합니다.
$ sudo make install-commandmode
/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw
* External command directory configured *
Nagios 구성 파일 설치
샘플 구성 파일을 설치합니다.
$ sudo make install-config
Apache 구성 파일 설치
다음 명령을 실행하여 Apache 구성 파일을 설치합니다.
$ sudo make install-webconf
구성을 활성화하기 위해 웹 서버를 재시작합니다.
$ sudo systemctl restart httpd
Systemd 서비스 파일 생성
다음 명령을 실행하여 systemd 유닛 파일을 설치합니다.
$ sudo make install-daemoninit
HTTP 인증 활성화
HTTP 인증을 통해 Nagios 웹 인터페이스를 잠글 수 있습니다. 다음 명령을 실행하여 htpasswd를 사용하여 사용자를 생성합니다. 비밀번호를 입력하라는 메시지가 표시됩니다.
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
사용자의 기본 이름은 nagiosadmin입니다. /usr/local/nagios/etc/cgi.cfg 파일에서 nagiosadmin의 모든 인스턴스를 선호하는 사용자 이름으로 바꾸어 다른 사용자 이름을 사용할 수 있습니다. 또는 다음과 같이 쉼표를 사용하여 사용자 이름을 추가할 수 있습니다.
authorized_for_system_information=nagiosadmin, username1
authorized_for_configuration_information=nagiosadmin, username1
authorized_for_system_commands=nagiosadmin, username1
authorized_for_all_services=nagiosadmin, username1
authorized_for_all_hosts=nagiosadmin, username1
authorized_for_all_service_commands=nagiosadmin, username1
authorized_for_all_host_commands=nagiosadmin, username1
읽기 전용 액세스 권한이 있는 사용자를 추가하려면 파일에서 해시(#)를 제거하여 다음 구성을 활성화합니다. 그런 다음 사용자 이름으로 htpasswd를 실행합니다.
authorized_for_read_only=username2
구성이 적용되도록 서버를 재시작합니다.
$ sudo systemctl restart httpd
4단계 - Nagios 플러그인 설치
Nagios 플러그인에 필요한 필수 조건을 설치합니다.
$ sudo dnf install epel-release
$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils postgresql-devel openldap-devel bind-utils samba-client fping openssh-clients lm_sensors perl-Net-SNMP
Nagios 플러그인의 GitHub 페이지에서 최신 버전을 다운로드합니다. 이 튜토리얼 시점에서 2.4.3이 최신 버전입니다. 다른 버전을 원할 경우 명령을 수정하세요.
$ cd ~
$ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.3/nagios-plugins-2.4.3.tar.gz
tar 파일을 추출합니다.
$ sudo tar zxf nagios-plugins.tar.gz
추출된 디렉토리를 /usr/src 디렉토리로 이동합니다.
$ sudo mv nagios-plugins-2.4.3 /usr/src/nagios-plugins
/usr/src/nagios-plugins 디렉토리로 다시 전환합니다.
$ cd /usr/src/nagios-plugins
플러그인을 컴파일하고 설치하기 위해 다음 명령을 실행합니다.
$ sudo ./configure
$ sudo make
$ sudo make install
5단계 - check_nrpe 플러그인 설치
NRPE GitHub 릴리스 페이지에서 최신 버전을 다운로드합니다. 이 튜토리얼을 작성할 당시 최신 버전은 4.1.0입니다. 다른 버전을 원할 경우 다음 명령을 수정하세요.
$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
아카이브를 추출합니다.
$ tar zxf nrpe-*.tar.gz
추출된 디렉토리를 /usr/src 디렉토리로 이동합니다.
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
/usr/src/nrpe 디렉토리로 전환합니다.
$ cd /usr/src/nrpe
플러그인을 구성하고 설치합니다.
$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin
이렇게 하면 check_nrpe 플러그인이 /usr/local/nagios/libexec/ 디렉토리에 배치됩니다.
6단계 - Nagios 시작
Nagios와 플러그인이 설치되었으므로 이제 Nagios 서비스를 시작할 시간입니다.
$ sudo systemctl start nagios
서비스가 제대로 실행되고 있는지 상태를 확인합니다.
$ sudo systemctl status nagios
Nagios 웹 인터페이스
브라우저에서 http:// URL을 엽니다. 로그인 프롬프트가 표시됩니다.
HTTP 인증 방법으로 생성한 자격 증명을 입력하면 다음 화면이 표시됩니다.

7단계 - 호스트 모니터링
호스트를 모니터링하려면 호스트에 NRPE 데몬과 Nagios 플러그인을 설치해야 합니다. 우리는 Nagios 서버에서 Rocky Linux 9 서버를 모니터링할 것입니다.
호스트에 로그인합니다.
$ ssh user@monitored_server_ip
Nagios 플러그인 설치
이전의 4단계에서와 같이 Nagios 플러그인을 설치합니다.
NRPE 설치
NRPE 데몬에 필요한 필수 조건을 설치합니다.
$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget
NRPE를 다운로드합니다.
$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
아카이브를 추출합니다.
$ tar zxf nrpe-*.tar.gz
추출된 디렉토리를 /usr/src 디렉토리로 이동합니다.
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
NRPE 디렉토리로 변경합니다.
$ cd /usr/src/nrpe
NRPE를 구성하고 설치합니다.
$ sudo ./configure --enable-command-args
$ sudo make all
사용자 및 그룹을 생성합니다.
$ sudo make install-groups-users
NRPE 바이너리, NRPE 데몬 및 check_npre 플러그인을 설치합니다.
$ sudo make install
구성 파일을 설치합니다.
$ sudo make install-config
서비스 파일을 업데이트합니다. /etc/services 파일은 서비스 이름을 포트 번호로 변환하는 데 사용됩니다.
$ sudo sh -c "echo >> /etc/services"
$ sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
$ sudo sh -c "sudo echo 'nrpe 5666/tcp' >> /etc/services"
NPRE 서비스 데몬을 설치합니다.
$ sudo make install-init
$ sudo systemctl enable nrpe
/usr/local/nagios/etc/nrpe.cfg에 있는 NPRE 구성 파일을 업데이트해야 합니다.
편집을 위해 파일을 엽니다.
$ sudo nano /usr/local/nagios/etc/nrpe.cfg
기본적으로 NPRE는 로컬호스트(127.0.0.1)에서만 요청을 수신합니다. Nagios 서버의 IP 주소를 파일에 추가해야 합니다.
allowed_hosts=127.0.0.1,10.25.5.2
다음 옵션은 NPRE 데몬이 클라이언트가 명령 인수를 지정할 수 있도록 허용할지 여부를 결정합니다. 고급 NPRE 구성을 활성화하려면 값을 1로 입력하여 옵션을 허용합니다.
dont_blame_nrpe=1
다음으로 아래로 스크롤하면 정의와 함께 NRPE 명령 목록이 표시됩니다. 모두 주석 처리되어 있습니다. Nagios가 이를 사용할 수 있도록 주석을 제거해야 합니다.
각 명령은 인수를 전달할 수 있습니다. 일부 명령은 앞에 하드코딩된 인수가 있으며, 일부는 사용자로부터 인수를 받을 수 있습니다. 각 명령은 다음과 같은 알림 옵션을 가질 수 있습니다.
- W는 경고 서비스 상태를 나타냅니다.
- C는 치명적인 서비스 상태를 나타냅니다.
- R은 서비스 복구(OK 상태)에 대한 알림을 나타냅니다.
따라서 어떤 수준에서 어떤 유형의 알림을 명령이 보낼 수 있는지 지정할 수 있습니다. 각 명령의 세부 설명과 기능은 이 튜토리얼의 범위를 벗어나므로 다루지 않겠습니다.
# The following examples use hardcoded command arguments...
# This is by far the most secure method of using NRPE
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to '1'. This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.
### MISC SYSTEM METRICS ###
command[check_users]=/usr/local/nagios/libexec/check_users $ARG1$
command[check_load]=/usr/local/nagios/libexec/check_load $ARG1$
command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap $ARG1$
command[check_cpu_stats]=/usr/local/nagios/libexec/check_cpu_stats.sh $ARG1$
command[check_mem]=/usr/local/nagios/libexec/custom_check_mem -n $ARG1$
### GENERIC SERVICES ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$
### SYSTEM UPDATES ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
#command[check_apt]=/usr/local/nagios/libexec/check_apt
### PROCESSES ###
command[check_all_procs]=/usr/local/nagios/libexec/custom_check_procs
command[check_procs]=/usr/local/nagios/libexec/check_procs $ARG1$
### OPEN FILES ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$
### NETWORK CONNECTIONS ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$
위의 명령에서 # 기호를 제거하여 주석을 해제합니다. 필요한 만큼 많은 명령을 주석 해제할 수 있습니다.
루트 디스크 공간을 확인하는 다음 명령을 추가합니다.
command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
NPRE 플러그인에서 사용하는 포트 5666을 허용합니다.
$ sudo firewall-cmd --permanent --add-port=5666/tcp
방화벽을 다시 로드합니다.
$ sudo firewall-cmd --reload
NPRE를 시작합니다.
$ sudo systemctl start nrpe
여기서부터는 명시되지 않는 한 모든 명령이 기본 Nagios 서버에서 실행됩니다.
기본 Nagios 서버에서 다음 명령을 실행하여 NRPE가 작동하는지 확인합니다.
$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip
다음과 같은 출력을 얻어야 합니다.
NRPE v4.1.0
호스트를 모니터링하려면 모니터링하려는 각 호스트에 대한 구성 파일을 생성해야 합니다. 이러한 호스트는 Nagios 웹 인터페이스를 통해 접근할 수 있게 됩니다.
구성 파일을 저장할 디렉토리를 생성하고 적절한 권한을 부여합니다.
$ sudo mkdir /usr/local/nagios/etc/servers
$ sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
$ sudo chmod g+w /usr/local/nagios/etc/servers
Nagios 구성 파일 /usr/local/nagios/etc/nagios.cfg를 편집합니다.
$ sudo nano /usr/local/nagios/etc/nagios.cfg
다음 파일을 찾아서 앞의 #를 제거하여 주석을 해제합니다.
cfg_dir=/usr/local/nagios/etc/servers
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
다음 단계는 /usr/local/nagios/etc/objects/commands.cfg 파일에 check_nrpe 명령을 추가하여 호스트를 모니터링하는 데 사용할 수 있도록 하는 것입니다.
파일 /usr/local/nagios/etc/objects/commands.cfg를 편집합니다.
$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
파일 끝에 다음 코드를 붙여넣습니다.
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
원격 호스트에 대한 새 구성 파일을 /usr/local/nagios/etc/servers/ 디렉토리에 생성합니다.
$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfg
원격 호스트의 host_name 값을 원격 호스트 이름으로, alias 값을 호스트 설명으로, address 값을 원격 호스트의 IP 주소로 바꾸어 다음 코드를 추가합니다.
define host {
use linux-server
host_name monitored_server_host_name
alias My client server
address monitored_server_private_ip
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
이 구성을 통해 Nagios는 호스트가 작동 중인지 중지 중인지 알려줍니다. 추가적인 것을 모니터링하려면 더 많은 서비스를 추가해야 합니다.
호스트의 연결 통계를 확인하기 위해 다음 블록을 추가합니다.
define service {
use generic-service
host_name monitored_server_host_name
service_description PING
check_command check_ping!200.0,20%!400.0,90%
}
서버의 평균 부하를 모니터링하기 위해 다음 블록을 추가합니다.
define service {
use generic-service
host_name monitored_server_host_name
service_description Load average
check_command check_nrpe!check_load!-a '-w 0.7,0.6,0.5 -c 0.9,0.8,0.7'
}
use generic-service 지시문은 Nagios가 미리 정의된 generic-service 템플릿을 상속하도록 지시합니다.
다음으로 디스크 사용량을 모니터링하기 위한 블록을 추가합니다. 적절한 디스크 레이블로 명령을 수정합니다.
define service {
use generic-service
host_name monitored_server_host_name
service_description /dev/vda1 free space
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/vda1'
}
다음 블록을 사용하여 SSH를 모니터링합니다. 다음 블록은 SSH 서버를 확인하고 서버가 5초 이내에 응답하지 않으면 경고를 생성합니다.
define service {
use generic-service
host_name monitored_server_host_name
service_description SSH Version Check
check_command check_ssh!-t 5
}
현재 실행 중인 프로세스의 총 수를 확인합니다.
define service{
use generic-service
host_name monitored_server_host_name
service_description Total Processes
check_command check_nrpe!check_total_procs
}
현재 로그인한 사용자 수를 확인합니다.
define service{
use generic-service
host_name monitored_server_host_name
service_description Current Users
check_command check_nrpe!check_users!-a '-w 5 -c 10'
}
SWAP 디스크 사용량을 확인합니다.
define service{
use generic-service
host_name monitored_server_host_name
service_description SWAP Usage
check_command check_nrpe!check_swap!-a '-w 40% -c 20%'
}
루트 파티션과 그 디스크 사용량을 확인합니다.
define service{
use generic-service
host_name nagiosclient
service_description Root / Partition
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
}
HTTP 서버가 설치되어 있는지 확인합니다.
define service {
use generic-service
host_name nagiosclient
service_description HTTP
check_command check_http
}
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
Nagios를 재시작합니다.
$ sudo systemctl restart nagios
모니터 확인
Nagios 대시보드를 열고 왼쪽 사이드바에서 호스트 옵션을 클릭합니다. 페이지에서 새로 구성된 호스트와 localhost를 볼 수 있어야 합니다.

새로 구성된 호스트(nagiosclient)를 클릭하면 모든 것이 올바르게 구성되었다면 상태를 볼 수 있어야 합니다. 상태가 나타나기까지 1분 정도 걸릴 수 있습니다.

구성한 서비스나 모니터를 보려면 이 호스트에 대한 상태 세부정보 보기 옵션을 클릭하면 다음 페이지가 표시됩니다.

이것은 호스트가 어떻게 작동하는지에 대한 적절한 아이디어를 제공해야 합니다.
8단계 - Nginx 설치
Nagios를 서버 IP를 통해 직접 실행하거나 도메인 이름에서 호스팅할 수 있습니다. Nagios는 이미 Apache 구성 파일을 제공하지만, 우리는 Nginx를 사용하여 실행할 것입니다. Nginx를 Apache 웹 서버 앞에 있는 리버스 프록시로 사용할 것입니다.
Apache는 이미 포트 80에서 실행되고 있습니다. 따라서 먼저 이를 변경해야 합니다. 그런 다음 Nginx를 프록시로 실행할 수 있습니다.
편집을 위해 /etc/httpd/conf/httpd.conf 파일을 엽니다.
$ sudo nano /etc/httpd/conf/httpd.conf
Listen 80 줄을 Listen 8080으로 변경합니다. 프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다. Nagios에 접근하기 위해 도메인 이름을 사용할 것이므로 포트 8080을 공개 액세스를 위해 열 필요는 없습니다.
Apache 서버를 재시작합니다.
$ sudo systemctl restart httpd
다음으로 Nginx를 설치합니다.
Rocky Linux 9는 이전 버전의 Nginx를 제공합니다. 최신 버전을 설치하기 위해 공식 Nginx 리포지토리를 다운로드해야 합니다.
/etc/yum.repos.d/nginx.repo 파일을 생성하고 열어 공식 Nginx 리포지토리를 만듭니다.
$ sudo nano /etc/yum.repos.d/nginx.repo
다음 코드를 붙여넣습니다.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
Nginx 서버를 설치합니다.
$ sudo dnf install nginx
설치를 확인합니다.
$ nginx -v
nginx version: nginx/1.22.1
Nginx 서버를 활성화하고 시작합니다.
$ sudo systemctl enable nginx --now
9단계 - SSL 설치 및 구성
Nginx를 구성하기 전에 Nagios와 함께 사용할 도메인에 대한 SSL 인증서를 설정하고 구성합니다. 이 경우 http://nagios.example.com을 사용할 것입니다.
이를 위해 Snapd 패키지 설치 프로그램을 사용할 것입니다. Rocky Linux는 기본적으로 Snapd를 제공하지 않으므로 Snapd 설치 프로그램을 설치합니다. EPEL 리포지토리가 필요하지만, 우리는 이미 이전에 설치했으므로 건너뛰어도 됩니다.
Snapd를 설치합니다.
$ sudo dnf install -y snapd
Snap 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable snapd --now
Snap core 패키지를 설치하고 Snapd 버전이 최신인지 확인합니다.
$ sudo snap install core && sudo snap refresh core
Snapd가 작동하도록 필요한 링크를 생성합니다.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
다음 명령을 실행하여 Certbot을 설치합니다.
$ sudo snap install --classic certbot
다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
설치를 확인합니다.
$ certbot --version
certbot 2.3.0
다음 명령을 실행하여 SSL 인증서를 생성합니다.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d nagios.example.com
위 명령은 서버의 /etc/letsencrypt/live/nagios.example.com 디렉토리에 인증서를 다운로드합니다.
Diffie-Hellman 그룹 인증서를 생성합니다.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
SSL 갱신이 제대로 작동하는지 확인하기 위해 프로세스를 건너뛰어 실행합니다.
$ sudo certbot renew --dry-run
오류가 없으면 모든 설정이 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
10단계 - Nginx 구성
Nginx를 구성하기 전에 또 다른 변경을 해야 합니다. 기본적으로 Apache는 Nagios를 http://를 통해 제공합니다. 이제 Nagios를 통해 직접 프록시를 설정할 수 있지만, https://nagios.example.com/nagios를 통해 제공됩니다. Nginx에서 루트 URL로 리디렉션을 설정할 수 있지만, 이는 복잡해집니다. 이러한 이유로 Apache와 Nagios에서 직접 변경을 하겠습니다.
먼저 /usr/local/nagios/etc/cgi.cfg 파일을 편집합니다.
$ sudo nano /usr/local/nagios/etc/cgi.cfg
url_html_path=/nagios를 url_html_path=/로 변경합니다.
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
다음으로 /etc/httpd/conf.d/nagios.conf 파일을 편집합니다.
$ sudo nano /etc/httpd/conf.d/nagios.conf
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"를 ScriptAlias /cgi-bin "/usr/local/nagios/sbin"로 변경합니다.
Alias /nagios "/usr/local/nagios/share" 줄을 주석 처리하여 다음과 같이 변경합니다.
#Alias /nagios "/usr/local/nagios/share"
그 아래에 다음 줄을 추가합니다.
DocumentRoot /usr/local/nagios/share
파일 상단에 다음 줄을 추가합니다.
파일 하단에 다음 줄을 추가합니다.
작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
마지막으로 /usr/local/nagios/share/config.inc.php 파일을 편집합니다.
$ sudo nano /usr/local/nagios/share/config.inc.php
$cfg['cgi_base_url']='/nagios/cgi-bin';를 $cfg['cgi_base_url']='/cgi-bin';로 변경합니다.
프롬프트가 나타나면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
Apache와 Nagios를 모두 재시작합니다.
$ sudo systemctl restart httpd
$ sudo systemctl restart nagios
모든 것이 올바르게 작동하는지 확인하기 위해 브라우저에서 http:// URL을 열면 Nagios가 제대로 작동하는 것을 볼 수 있습니다. 또한 호스트 데이터가 수신되고 있는지 확인하십시오.
모든 것이 작동하면 Nginx에 대한 구성 파일을 생성할 수 있습니다.
/etc/nginx/conf.d 디렉토리에 Nagios에 대한 구성 파일을 생성합니다.
$ sudo nano /etc/nginx/conf.d/nagios.conf
다음 코드를 붙여넣습니다.
server {
listen 80; listen [::]:80;
server_name nagios.example.com;
return 301 https://$host$request_uri;
}
server {
server_name nagios.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/nagios.access.log;
error_log /var/log/nginx/nagios.error.log;
ssl_certificate /etc/letsencrypt/live/nagios.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nagios.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/nagios.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.
구성 파일을 검증합니다.
$ sudo nginx -t
다음 오류가 표시되면 /etc/nginx/nginx.conf 파일을 편집하여 server_names_hash_bucket_size 변수를 조정해야 합니다.
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
/etc/nginx/nginx.conf 파일을 편집합니다.
$ sudo nano /etc/nginx/nginx.conf
다음 줄을 추가합니다.
server_names_hash_bucket_size 64;
작업이 완료되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다. Nginx를 다시 검증합니다.
문제가 없으면 Nginx 서버를 재시작합니다.
$ sudo systemctl restart nginx
SELinux 구성
SELinux를 활성화한 상태로 두었다면, Nginx가 네트워크에 연결할 수 있도록 허용하려면 다음 명령을 실행합니다.
$ sudo setsebool -P httpd_can_network_connect on
브라우저에서 https://nagios.example.com 도메인을 열면 Nagios 홈페이지가 표시됩니다.
결론
Rocky Linux 9 서버에 Nagios를 설치하고 구성하여 부하, 디스크/스왑 사용량, 사용자, 총 프로세스, HTTP 및 SSH와 같은 여러 서비스를 모니터링할 수 있게 되었습니다. 이것으로 튜토리얼을 마칩니다. 더 많은 정보를 얻으려면 모니터링 및 다양한 명령에 대한 공식 Nagios 문서를 확인하십시오. 질문이 있으면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.