웹사이트 검색

CentOS 8에서 Nagios를 설치하고 구성하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
  3. 2단계 - Apache 및 PHP 설치
  4. 3단계 - Nagios 설치
    1. 종속성 설치
    2. 나기오스 다운로드
    3. 나기오스 컴파일
    4. Nagios 사용자 및 그룹 만들기
    5. Nagios 바이너리 설치
    6. 외부 명령 디렉토리 생성
    7. Nagios 구성 파일 설치
    8. Apache 구성 파일 설치
    9. Systemd 서비스 파일 만들기
    10. HTTP 인증 활성화\n

    1. Nagios 웹 인터페이스

    1. Nagios 플러그인 설치\n
    2. NRPE 설치
    3. 모니터 확인\n

    1. 8a단계 - SSL 설치 및 구성

    Nagios는 대중적이고 가장 강력한 오픈 소스 컴퓨터 모니터링 시스템 중 하나입니다. IT 인프라를 추적하고 네트워크, 서버, 애플리케이션 및 프로세스가 원활하게 실행되도록 합니다. 모니터링 시스템을 사용하면 문제가 발생하기 전에 식별하고 수정 사항을 신속하게 배포하여 비용과 가동 중지 시간을 절약할 수 있습니다.

    이 튜토리얼에서는 CentOS 8 기반 서버에서 Nagios를 설치하고 구성하는 방법을 배웁니다. 또한 몇 가지 기본 구성을 수행하고 원격 호스트를 모니터링할 수 있는 Nagios Remote Plugin Executor(NPRE)를 설치합니다.

    전제 조건

    1. A server running CentOS 8
    2. A non-sudo user with root privileges.
    3. SELinux Disabled
    4. Another server running CentOS 8 that you want to monitor.
    5. Ensure that everything is updated.
      $ sudo dnf update
      

    1단계 - 방화벽 구성

    첫 번째 단계는 방화벽을 구성하는 것입니다. Fedora 서버는 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 systemctl reload firewalld
    

    2단계 - Apache 및 PHP 설치

    Nagios를 실행하려면 PHP와 함께 Apache가 설치되어 있어야 합니다.

    Apache 서비스를 설치하고 활성화합니다.

    $ sudo dnf install httpd
    $ sudo systemctl enable --now httpd
    

    PHP를 설치하기 위해 Remi Repository를 사용합니다. Remi Repo를 설치하고 PHP 7.4를 활성화합니다.

    $ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
    $ sudo dnf module reset php
    $ sudo dnf module enable php:remi-7.4
    

    PHP 및 몇 가지 일반적인 PHP 모듈을 설치합니다.

    $ sudo dnf install php php-gd php-curl
    

    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
    

    편집기에 다음 코드를 붙여넣습니다.

    <?php phpinfo();
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    브라우저에서 URL http:///info.php를 열면 다음 페이지가 표시됩니다.

    3단계 - Nagios 설치

    이 자습서의 대부분은 주 서버에서 설치하고 작업해야 합니다.

    종속성 설치

    이 튜토리얼에서는 Nagios와 해당 플러그인을 소스에서 빌드해야 합니다. 따라서 먼저 몇 가지 개발 라이브러리를 설치해야 합니다.

    $ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip wget gettext autoconf net-snmp-utils epel-release postfix automake
    $ sudo dnf config-manager --enable powertools 
    $ sudo dnf install perl-Net-SNMP
    

    나기오스 다운로드

    다운로드한 Nagios 소스 파일을 저장할 /usr/src 디렉토리로 전환합니다.

    $ cd /usr/src
    

    Github 페이지에서 최신 버전의 Nagios를 다운로드하십시오. 튜토리얼 당시에는 4.4.6이 최신 버전이었습니다. 다른 버전을 원하는 경우 명령을 수정하십시오.

    $ sudo wget https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz
    

    tar 파일을 추출합니다.

    $ sudo tar zxf nagios-*.tar.gz
    

    Nagios 소스 디렉토리로 전환합니다.

    $ cd nagioscore-nagios-*/
    

    나기오스 컴파일

    다음 단계는 소스 파일에서 Nagios를 컴파일하는 것입니다. configure 스크립트를 실행하여 모든 종속성이 있는지 확인하는 검사를 수행합니다.

    $ sudo ./configure
    

    스크립트를 성공적으로 완료한 후 유사한 출력을 얻어야 합니다.

    *** Configuration summary for nagios 4.4.6 2020-04-28 ***:
    
     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:  /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 웹 인터페이스를 잠글 수 있습니다. 이를 위해 nagiosadmin이라는 관리 사용자를 만듭니다.

    다음 명령을 실행하여 htpasswd를 사용하여 사용자를 생성합니다. 비밀번호를 입력하라는 메시지가 표시됩니다.

    $ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
    New password:
    Re-type new password:
    Adding password for user nagiosadmin
    

    구성을 적용하려면 서버를 다시 시작하십시오.

    $ sudo systemctl restart httpd
    

    4단계 - Nagios 플러그인 설치

    Nagios 플러그인에 필요한 필수 구성 요소를 설치합니다.

    $ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release postgresql-devel libdbi-devel openldap-devel mysql-devel mysql-libs bind-utils samba-client fping openssh-clients lm_sensors
    $ sudo dnf config-manager --enable powertools
    $ sudo dnf install -y perl-Net-SNMP
    

    /usr/src 디렉토리로 다시 전환하십시오.

    $ cd /usr/src
    

    Github 페이지에서 최신 버전의 Nagios를 다운로드하십시오. 튜토리얼 당시에는 2.3.3이 최신 버전이었습니다. 다른 버전을 원하는 경우 명령을 수정하십시오.

    $ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz
    

    tar 파일을 추출합니다.

    $ sudo tar zxf nagios-plugins.tar.gz
    

    플러그인 디렉토리로 변경하십시오.

    $ cd nagios-plugins-*
    

    플러그인을 컴파일하고 설치하려면 다음 명령을 실행하십시오.

    $ sudo ./configure
    $ sudo make
    $ sudo make install
    

    5단계 - check_nrpe 플러그인 설치

    /usr/src 디렉토리로 전환합니다.

    $ cd /usr/src
    

    Github 페이지에서 최신 버전의 NPRE를 다운로드하십시오. 이 튜토리얼을 작성할 당시 사용 가능한 최신 버전은 4.0.3입니다. 다른 버전을 원하는 경우 다음 명령을 수정하십시오.

    $ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
    

    아카이브를 추출하십시오.

    $ sudo tar zxf nrpe-*.tar.gz
    

    NPRE 디렉터리로 변경합니다.

    $ cd nrpe-4.0.3
    

    플러그인을 구성하고 설치합니다.

    $ 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 웹 인터페이스

    브라우저에서 URL http:///nagios를 엽니다. 로그인 프롬프트가 표시되어야 합니다.

    HTTP 인증 방법 중에 생성한 자격 증명을 입력하면 다음 화면이 표시됩니다.

    7단계 - 호스트 모니터링

    호스트를 모니터링하려면 호스트에 NRPE Daemon 및 Nagios 플러그인을 설치해야 합니다. Nagios 서버에서 CentOS 8 기반 서버를 모니터링합니다.

    호스트에 로그인합니다.

    $ ssh _server_ip
    

    Nagios 플러그인 설치

    이전의 4단계를 반복하여 Nagios 플러그인을 설치합니다.

    NRPE 설치

    NRPE 데몬에 필요한 필수 구성 요소를 설치합니다.

    $ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget
    

    /usr/src 디렉토리로 전환합니다.

    $ cd /usr/src
    

    NRPE를 다운로드합니다.

    $ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
    

    아카이브를 추출하십시오.

    $ sudo tar zxf nrpe-*.tar.gz
    

    NPRE 디렉터리로 변경합니다.

    $ cd nrpe-4.0.3
    

    NPRE를 구성하고 설치합니다.

    $ sudo ./configure --enable-command-args
    $ sudo make all
    

    사용자 및 그룹을 만듭니다.

    $ sudo make install-groups-users
    

    NPRE 바이너리, NPRE 데몬 및 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는 localhost(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 = 중요한 서비스 상태를 나타냅니다.\n
    • 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$
    

    명령 앞에 있는 # 기호를 제거하여 위 명령의 주석 처리를 제거하십시오. 필요한 만큼 많은 명령의 주석을 제거할 수 있습니다.

    완료되면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    NPRE 플러그인에서 사용하는 포트 5666을 허용합니다.

    $ sudo firewall-cmd --permanent --add-port=5666/tcp
    

    방화벽을 다시 로드하십시오.

    $ sudo systemctl reload firewalld
    

    NPRE를 시작합니다.

    $ sudo systemctl start nrpe
    

    여기서부터 모든 명령은 별도로 지정하지 않는 한 기본 Nagios 서버에서 실행됩니다.

    기본 Nagios 서버에서 다음 명령을 실행하여 NRPE가 작동하는지 확인합니다.

    $ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip
    

    다음 출력이 표시되어야 합니다.

    NRPE v4.0.3
    

    호스트를 모니터링하려면 모니터링하려는 각 호스트에 대한 구성 파일을 만들어야 합니다. 그런 다음 이러한 호스트는 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를 엽니다. 다음 파일을 찾아 앞의 #를 제거하여 주석을 해제합니다.

    #cfg_dir=/usr/local/nagios/etc/servers
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    다음 단계는 호스트를 모니터링하는 데 사용할 수 있도록 check_nrpe 명령을 /usr/local/nagios/etc/objects/commands.cfg 파일에 추가하는 것입니다.

    편집을 위해 /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                       client01
          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라는 템플릿에서 상속하도록 Nagios에 지시합니다.

    다음으로 블록을 추가하여 디스크 사용량을 모니터링합니다.

    define service {
            use                             generic-service
            host_name                       monitored_server_host_name
            service_description             /dev/sda1 free space
            check_command                   check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/sda1'
    }
    

    다음으로 다음 코드 블록을 사용하여 HTTP 서비스를 모니터링할 수 있습니다.

    define service {
        use                 				generic-service
        host_name 					        monitored_server_host_name
        service_description 				HTTP
        check_command       				check_http
    }
    

    다음 블록을 사용하여 SSH를 모니터링합니다. 다음 블록은 SSH 서버를 확인하고 서버가 5초 이내에 응답하지 않으면 경고를 생성합니다.

    define service {
        use                                 generic-service
        host_name                           nagiosclient
        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'
    }
    

    루트 파티션과 디스크 사용량을 확인하십시오.

    define service{                     
        use                     			generic-service            
        host_name               			monitored_server_host_name            
        service_description     			Root / Partition            
        check_command           			check_nrpe!check_root
    }
    

    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%'
    }
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    Nagios를 다시 시작하십시오.

    $ sudo systemctl restart nagios
    

    모니터 확인

    Nagios 대시보드를 열고 왼쪽 사이드바에서 호스트 옵션을 클릭합니다. 페이지에 localhost와 함께 새로 구성된 호스트가 표시되어야 합니다.

    새로 구성된 호스트(nagiosclient)를 클릭하고 모든 것이 올바르게 구성된 경우 해당 상태를 확인해야 합니다. 상태가 표시되는 데 1분 정도 걸립니다.

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

    우리의 경우에는 스왑 메모리를 구성하지 않았으므로 스왑 공간이 0이므로 서비스에 대한 위험 상태가 됩니다. 이를 통해 호스트가 어떻게 작동하는지 알 수 있습니다.

    8단계 - Nginx 설치 및 구성

    서버 IP를 통해 직접 Nagios를 실행하거나 자체 도메인 이름에서 호스팅하도록 할 수 있습니다. Nagios는 이미 Apache 구성 파일과 함께 제공되지만 Nginx를 사용하여 실행합니다. Apache 웹 서버 앞에서 Nginx를 리버스 프록시로 사용합니다.

    Apache는 이미 포트 80에서 실행 중입니다. 따라서 먼저 이를 변경해야 합니다. 그런 다음 Nginx를 프록시로 실행할 수 있습니다.

    편집을 위해 /etc/httpd/conf/httpd.conf 파일을 엽니다.

    $ sudo nano /etc/httpd/conf/httpd.conf
    

    Listen 80 줄을 Listen 8080으로 변경합니다.

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    방화벽에 새 IP 주소를 추가하십시오.

    $ sudo firewall-cmd --permanent --add-port=8080/tcp
    $ sudo systemctl reload firewalld
    

    아파치 서버를 다시 시작하십시오.

    $ sudo systemctl restart httpd
    

    다음으로 Nginx를 설치합니다.

    CentOS 8은 기본적으로 Nginx 1.14와 함께 제공되지만 이전 버전입니다. 최신 버전도 활성화할 수 있습니다.

    $ sudo dnf module enable nginx:1.20
    $ sudo dnf install nginx
    

    Nginx 서버를 활성화합니다.

    $ sudo systemctl enable nginx
    

    8a단계 - SSL 설치 및 구성

    Nginx를 구성하기 전에 Nagios와 함께 사용할 도메인에 대한 SSL 인증서를 설정하고 구성합니다. 이 경우에는 http://nagios.example.com을 사용합니다.

    Lets Encrypt를 사용하여 SSL 인증서를 설치하려면 Certbot 도구를 다운로드해야 합니다. Certbot은 튜토리얼의 앞부분에서 이미 추가한 CentOS의 EPEL 저장소에서 사용할 수 있습니다.

    $ sudo dnf install certbot python3-certbot-nginx
    

    Nginx 서비스를 중지합니다.

    $ sudo systemctl stop nginx
    

    SSL 인증서를 생성합니다.

    $ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email  http -d nagios.example.com
    

    위의 명령은 서버의 /etc/letsencrypt/live/nagios.example.com 디렉토리에 인증서를 다운로드합니다.

    SSL을 갱신하기 위해 Cron 작업을 생성합니다. 인증서를 확인하고 필요한 경우 갱신하기 위해 매일 실행됩니다. 이를 위해 먼저 /etc/cron.daily/certbot-renew 파일을 생성하고 편집을 위해 엽니다.

    $ sudo nano /etc/cron.daily/certbot-renew
    

    다음 코드를 붙여넣습니다.

    #!/bin/sh
    certbot renew --cert-name nagios.example.com --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    실행 가능하도록 태스크 파일에 대한 권한을 변경하십시오.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    Diffie-Hellman 그룹 인증서를 생성합니다.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    Nginx를 구성하기 전에 변경해야 할 또 다른 사항이 있습니다. 기본적으로 Apache는 http://:8080/nagios를 통해 Nagios를 제공합니다. 이제 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=/nagiosurl_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
    

    파일 맨 위에 다음 행을 추가하십시오.

    <VirtualHost *:1080>
    

    파일 맨 아래에 다음 행을 추가하십시오.

    </VirtualHost>
    

    완료되면 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
    

    모든 것이 올바르게 작동하는지 확인하려면 브라우저에서 URL http://:1080을 열면 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 X-Forwarded-For $proxy_add_x_forwarded_for;
    		       proxy_set_header Host $host;
                    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 start nginx
    

    브라우저에서 도메인 https://nagios.example.com을 실행하면 Nagios 홈페이지가 표시됩니다.

    결론

    로드, 디스크/스왑 사용량, 사용자, 전체 프로세스, HTTP 및 SSH와 같은 여러 서비스를 모니터링하기 위해 CentOS 8 기반 서버에 Nagios를 설치 및 구성했습니다. 이것으로 튜토리얼을 마칩니다. 더 자세히 알아보려면 모니터링 및 다양한 명령을 다루는 공식 Nagios 문서를 확인해야 합니다. 질문이 있으시면 아래 의견에 게시하십시오.