웹사이트 검색

CentOS 7에서 Nagios 4를 설치하고 서버를 모니터링하는 방법


소개

이 튜토리얼에서는 매우 인기 있는 오픈 소스 모니터링 시스템인 Nagios 4를 CentOS 7 또는 RHEL 7에 설치하는 방법을 다룰 것입니다. 웹 인터페이스를 통해 호스트 리소스를 모니터링할 수 있도록 몇 가지 기본 구성을 다룰 것입니다. 또한 원격 호스트에 에이전트로 설치될 NRPE(Nagios Remote Plugin Executor)를 활용하여 로컬 리소스를 모니터링합니다.

Nagios는 서버 인벤토리를 유지하고 중요한 서비스가 실행 중인지 확인하는 데 유용합니다. Nagios와 같은 모니터링 시스템을 사용하는 것은 모든 프로덕션 서버 환경에 필수적인 도구입니다.

전제 조건

이 자습서를 따르려면 Nagios를 실행할 CentOS 7 서버에 대한 수퍼유저 권한이 있어야 합니다. 이상적으로는 수퍼유저 권한이 있는 루트가 아닌 사용자를 사용하게 됩니다. 이를 설정하는 데 도움이 필요한 경우 CentOS 7을 사용한 초기 서버 설정 자습서의 1~3단계를 따르십시오.

LAMP 스택도 필요합니다. 설정이 필요한 경우 CentOS 7에 LAMP 스택을 설치하는 방법 튜토리얼을 따르십시오.

이 자습서에서는 서버에 개인 네트워킹이 활성화되어 있다고 가정합니다. 그렇지 않은 경우 사설 IP 주소에 대한 모든 참조를 공용 IP 주소로 바꾸십시오.

이제 전제 조건을 정리했으므로 Nagios 4 설치로 이동하겠습니다.

나기오스4 설치

이 섹션에서는 모니터링 서버에 Nagios 4를 설치하는 방법을 설명합니다. 이 섹션은 한 번만 완료하면 됩니다.

빌드 종속성 설치

소스에서 Nagios Core를 빌드하고 있기 때문에 빌드를 완료할 수 있는 몇 가지 개발 라이브러리를 설치해야 합니다.

먼저 필요한 패키지를 설치합니다.

sudo yum install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip

Nagios 사용자 및 그룹 생성

Nagios 프로세스를 실행할 사용자 및 그룹을 생성해야 합니다. "nagios\ 사용자 및 "nagcmd\ 그룹을 만든 다음 다음 명령을 사용하여 사용자를 그룹에 추가합니다.

sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios

이제 Nagios를 설치합시다.

나기오스 코어 설치

Nagios Core의 최신 안정 릴리스에 대한 소스 코드를 다운로드하십시오. Nagios 다운로드 페이지로 이동하여 양식 아래에 있는 다운로드 건너뛰기 링크를 클릭합니다. Nagios 서버에 다운로드할 수 있도록 최신 안정 릴리스의 링크 주소를 복사합니다.

이 글을 쓰는 시점에서 최신 안정 릴리스는 Nagios 4.1.1입니다. curl을 사용하여 홈 디렉터리에 다운로드합니다.

cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz

다음 명령으로 Nagios 아카이브를 추출합니다.

tar xvf nagios-*.tar.gz

그런 다음 추출된 디렉터리로 변경합니다.

cd nagios-*

Nagios를 빌드하기 전에 다음 명령으로 구성해야 합니다.

./configure --with-command-group=nagcmd 

이제 다음 명령으로 Nagios를 컴파일합니다.

make all

이제 다음 make 명령을 실행하여 Nagios, init 스크립트 및 샘플 구성 파일을 설치할 수 있습니다.

sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
sudo make install-webconf

Nagios에 대한 웹 인터페이스를 통해 외부 명령을 실행하려면 웹 서버 사용자인 apachenagcmd 그룹에 추가해야 합니다.

  1. sudo usermod -G nagcmd apache

Nagios 플러그인 설치

여기에서 Nagios 플러그인의 최신 릴리스를 찾으십시오: Nagios Plugins 다운로드. 최신 버전의 링크 주소를 복사하고 Nagios 서버에 다운로드할 수 있도록 링크 주소를 복사하십시오.

이 글을 쓰는 시점에서 최신 버전은 Nagios Plugins 2.1.1입니다. curl을 사용하여 홈 디렉터리에 다운로드합니다.

cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

다음 명령으로 Nagios 플러그인 아카이브를 추출합니다.

tar xvf nagios-plugins-*.tar.gz

그런 다음 추출된 디렉터리로 변경합니다.

cd nagios-plugins-*

Nagios 플러그인을 빌드하기 전에 구성해야 합니다. 다음 명령을 사용하십시오.

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl

이제 다음 명령으로 Nagios 플러그인을 컴파일합니다.

make

그런 다음 다음 명령으로 설치하십시오.

sudo make install

NRPE 설치

NRPE 다운로드 페이지에서 NRPE의 최신 안정 릴리스에 대한 소스 코드를 찾으십시오. Nagios 서버에 최신 버전을 다운로드하십시오.

이 글을 쓰는 시점에서 최신 릴리스는 2.15입니다. curl을 사용하여 홈 디렉터리에 다운로드합니다.

  1. cd ~
  2. curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

다음 명령을 사용하여 NRPE 아카이브를 추출합니다.

  1. tar xvf nrpe-*.tar.gz

그런 다음 추출된 디렉터리로 변경합니다.

  1. cd nrpe-*

다음 명령으로 NRPE를 구성합니다.

  1. ./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

이제 다음 명령을 사용하여 NRPE 및 xinetd 시작 스크립트를 빌드하고 설치합니다.

  1. make all
  2. sudo make install
  3. sudo make install-xinetd
  4. sudo make install-daemon-config

편집기에서 xinetd 시작 스크립트를 엽니다:

  1. sudo vi /etc/xinetd.d/nrpe

Nagios 서버의 개인 IP 주소를 끝에 추가하여 only_from 줄을 수정합니다(서버의 실제 IP 주소로 대체).

only_from = 127.0.0.1 10.132.224.168

저장 및 종료. Nagios 서버만 NRPE와 통신할 수 있습니다.

NRPE를 시작하려면 xinetd 서비스를 다시 시작하십시오.

  1. sudo service xinetd restart

이제 Nagios 4가 설치되었으므로 구성해야 합니다.

Nagios 구성

이제 초기 Nagios 구성을 수행하겠습니다. Nagios 서버에서 이 섹션을 한 번만 수행하면 됩니다.

Nagios 구성 구성

즐겨 사용하는 텍스트 편집기에서 기본 Nagios 구성 파일을 엽니다. vi를 사용하여 파일을 편집합니다.

sudo vi /usr/local/nagios/etc/nagios.cfg

이제 #를 삭제하여 이 줄의 주석 처리를 제거하십시오.

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

저장 및 종료.

이제 모니터링할 각 서버에 대한 구성 파일을 저장할 디렉터리를 만듭니다.

sudo mkdir /usr/local/nagios/etc/servers

Nagios 연락처 구성

즐겨 사용하는 텍스트 편집기에서 Nagios 연락처 구성을 엽니다. vi를 사용하여 파일을 편집합니다.

sudo vi /usr/local/nagios/etc/objects/contacts.cfg

이메일 지시문을 찾아 해당 값(강조 표시된 부분)을 자신의 이메일 주소로 바꿉니다.

email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

저장 및 종료.

check_nrpe 명령 구성

Nagios 구성에 새 명령을 추가해 보겠습니다.

  1. sudo vi /usr/local/nagios/etc/objects/commands.cfg

파일 끝에 다음을 추가합니다.

define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

저장 및 종료. 이를 통해 Nagios 서비스 정의에서 check_nrpe 명령을 사용할 수 있습니다.

아파치 구성

htpasswd를 사용하여 Nagios 웹 인터페이스에 액세스할 수 있는 "nagiosadmin”이라는 관리 사용자를 만듭니다.

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

프롬프트에 암호를 입력합니다. Nagios 웹 인터페이스에 액세스하려면 이 로그인이 필요하므로 이 로그인을 기억하십시오.

참고: 이름이 "nagiosadmin”이 아닌 사용자를 생성하는 경우 /usr/local/nagios/etc/cgi.cfg를 편집하고 모든 "nagiosadmin” 참조를 다음으로 변경해야 합니다. 당신이 만든 사용자.

Nagios를 시작할 준비가 되었습니다. 그렇게 하고 Apache를 다시 시작합니다.

sudo systemctl daemon-reload
sudo systemctl start nagios.service
sudo systemctl restart httpd.service

Nagios가 서버 부팅 시 시작되도록 하려면 다음 명령을 실행합니다.

sudo chkconfig nagios on

선택 사항: IP 주소로 액세스 제한

Nagios 웹 인터페이스에 액세스할 수 있는 IP 주소를 제한하려면 Apache 구성 파일을 편집해야 합니다.

sudo vi /etc/httpd/conf.d/nagios.conf

다음 두 줄을 찾아서 앞에 # 기호를 추가하여 설명합니다.

Order allow,deny
Allow from all

그런 다음 # 기호를 삭제하여 다음 줄의 주석 처리를 제거하고 Allow from 줄에 허용하려는 IP 주소 또는 범위(공백으로 구분)를 추가합니다.

#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1

이러한 행은 구성 파일에 두 번 나타나므로 이 단계를 한 번 더 수행해야 합니다.

저장 및 종료.

이제 Nagios를 시작하고 Apache를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart nagios.service
sudo systemctl restart httpd.service

이제 Nagios가 실행 중이므로 로그인을 시도하십시오.

Nagios 웹 인터페이스에 액세스

즐겨 사용하는 웹 브라우저를 열고 Nagios 서버로 이동합니다(강조 표시된 부분을 IP 주소 또는 호스트 이름으로 대체).

http://nagios_server_public_ip/nagios

htpasswd를 사용하도록 Apache를 구성했으므로 이전에 생성한 로그인 자격 증명을 입력해야 합니다. 사용자 이름으로 "nagiosadmin\을 사용했습니다.

인증 후 기본 Nagios 홈페이지가 표시됩니다. 왼쪽 탐색 모음에서 호스트 링크를 클릭하여 Nagios가 모니터링하는 호스트를 확인합니다.

보시다시피 Nagios는 "localhost\ 또는 그 자체만을 모니터링합니다.

Nagios로 다른 호스트를 모니터링하자!

NRPE로 CentOS 7 호스트 모니터링

이 섹션에서는 Nagios에 새 호스트를 추가하여 모니터링하는 방법을 보여줍니다. 모니터링하려는 각 CentOS 또는 RHEL 서버에 대해 이 섹션을 반복합니다.

참고: Ubuntu 또는 Debian 서버를 모니터링하려면 NRPE로 Ubuntu 호스트 모니터링 링크의 지침을 따르십시오.

모니터링하려는 서버에 EPEL 리포지토리를 설치합니다.

sudo yum install epel-release

이제 Nagios 플러그인과 NRPE를 설치합니다.

sudo yum install nrpe nagios-plugins-all

이제 NRPE 구성 파일을 업데이트하겠습니다. 선호하는 편집기에서 엽니다(여기서는 vi를 사용합니다).

sudo vi /etc/nagios/nrpe.cfg

allowed_hosts 지시문을 찾아 Nagios 서버의 사설 IP 주소를 쉼표로 구분된 목록에 추가합니다(강조 표시된 예 대신 대체).

allowed_hosts=127.0.0.1,10.132.224.168

저장 및 종료. 이렇게 하면 개인 IP 주소를 통해 Nagios 서버의 요청을 수락하도록 NRPE가 구성됩니다.

변경 사항을 적용하려면 NRPE를 다시 시작하십시오.

sudo systemctl start nrpe.service
sudo systemctl enable nrpe.service

모니터링하려는 호스트에 NRPE 설치 및 구성을 완료하면 모니터링을 시작하기 전에 이러한 호스트를 Nagios 서버 구성에 추가해야 합니다.

Nagios 구성에 호스트 추가

Nagios 서버에서 /usr/local/nagios/etc/servers/에서 모니터링하려는 각 원격 호스트에 대한 새 구성 파일을 만듭니다. 강조 표시된 단어 "yourhost\를 호스트 이름으로 바꿉니다.

sudo vi /usr/local/nagios/etc/servers/yourhost.cfg

다음 호스트 정의를 추가하여 host_name 값을 원격 호스트 이름(예: "web-1\)으로 바꾸고 alias 값을 호스트에 대한 설명으로 바꿉니다. , address 값과 원격 호스트의 사설 IP 주소:

define host {
        use                             linux-server
        host_name                       yourhost
        alias                           My first Apache server
        address                         10.132.234.52
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

위의 구성 파일을 사용하면 Nagios는 호스트가 작동 중인지 또는 작동 중인지 여부만 모니터링합니다. 이것으로 충분하면 저장하고 종료한 다음 Nagios를 다시 시작하십시오. 특정 서비스를 모니터링하려면 계속 읽으십시오.

모니터링하려는 서비스에 대해 이러한 서비스 블록을 추가하십시오. check_command의 값은 상태 임계값을 포함하여 모니터링할 항목을 결정합니다. 다음은 호스트의 구성 파일에 추가할 수 있는 몇 가지 예입니다.

핑:

define service {
        use                             generic-service
        host_name                       yourhost
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

SSH(notifications_enabled를 0으로 설정하면 서비스에 대한 알림이 비활성화됨):

define service {
        use                             generic-service
        host_name                       yourhost
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}

generic-service 사용이 무엇을 의미하는지 잘 모르겠다면 기본적으로 정의된 "generic-service\라는 서비스 템플릿의 값을 상속하는 것입니다.

이제 저장하고 종료합니다. 변경 사항을 적용하려면 Nagios 구성을 다시 로드하십시오.

sudo systemctl reload nagios.service

모든 원격 호스트를 모니터링하도록 Nagios 구성을 완료하면 설정해야 합니다. Nagios 웹 인터페이스에 액세스하고 서비스 페이지를 확인하여 모니터링되는 모든 호스트 및 서비스를 확인하십시오.

결론

이제 호스트와 해당 서비스 중 일부를 모니터링했으므로 어떤 서비스가 중요한지 파악하는 데 시간을 할애하여 해당 서비스를 모니터링할 수 있습니다. 예를 들어, 디스크 사용률이 경고 또는 위험 임계값에 도달하거나 기본 웹 사이트가 다운될 때 이메일을 수신하도록 알림을 설정하여 상황을 즉시 또는 문제가 발생하기 전에 해결할 수 있습니다.

행운을 빌어요!