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


소개

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

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

전제 조건

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

LAMP 스택도 필요합니다. 이를 설정해야 하는 경우 Ubuntu 14.04에 Linux, Apache, MySQL, PHP(LAMP) 스택을 설치하는 방법 튜토리얼을 따르십시오.

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

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

나기오스4 설치

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

Nagios 사용자 및 그룹 생성

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

  1. sudo useradd nagios
  2. sudo groupadd nagcmd
  3. sudo usermod -a -G nagcmd nagios

빌드 종속성 설치

소스에서 Nagios Core를 빌드하고 있기 때문에 빌드를 완료할 수 있는 몇 가지 개발 라이브러리를 설치해야 합니다. 그 동안 Nagios 웹 인터페이스를 설정하는 데 사용할 apache2-utils도 설치합니다.

먼저 apt-get 패키지 목록을 업데이트합니다.

  1. sudo apt-get update

그런 다음 필요한 패키지를 설치합니다.

  1. sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev xinetd apache2-utils unzip

이제 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 아카이브를 추출합니다.

  1. tar xvf nagios-*.tar.gz

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

  1. cd nagios-*

Nagios를 빌드하기 전에 구성해야 합니다. postfix(apt-get으로 설치할 수 있음)를 사용하도록 구성하려면 다음 명령에 --with-mail=/usr/sbin/sendmail을 추가합니다.

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

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

  1. make all

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

  1. sudo make install
  2. sudo make install-commandmode
  3. sudo make install-init
  4. sudo make install-config
  5. sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

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

  1. sudo usermod -G nagcmd www-data

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 플러그인 아카이브를 추출합니다.

  1. tar xvf nagios-plugins-*.tar.gz

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

  1. cd nagios-plugins-*

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

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

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

  1. make

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

  1. 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 명령을 사용할 수 있습니다.

아파치 구성

Apache 재작성 및 cgi 모듈을 활성화합니다.

sudo a2enmod rewrite
sudo a2enmod cgi

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

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

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

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

이제 sites-enabled 디렉토리에 대한 nagios.conf의 심볼릭 링크를 만듭니다.

sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

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

sudo service nagios start
sudo service apache2 restart

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

sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

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

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

sudo vi /etc/apache2/sites-available/nagios.conf

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

Order allow,deny
Allow from all

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

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

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

저장 및 종료.

이제 Apache를 다시 시작하여 변경 사항을 적용하십시오.

sudo service nagios restart
sudo service apache2 restart

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

Nagios 웹 인터페이스에 액세스

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

http://nagios_server_public_ip/nagios

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

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

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

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

NRPE로 호스트 모니터링

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

모니터링하려는 서버에서 apt-get을 업데이트합니다.

sudo apt-get update

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

sudo apt-get install nagios-plugins nagios-nrpe-server

허용된 호스트 구성

이제 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 명령 구성

루트 파일 시스템의 이름을 찾습니다(모니터링하려는 항목 중 하나이기 때문).

df -h /

NRPE 구성의 파일 시스템 이름을 사용하여 디스크 사용량을 모니터링할 것입니다(아마도 /dev/vda일 것입니다). 이제 편집을 위해 nrpe.cfg를 엽니다.

sudo vi /etc/nagios/nrpe.cfg

NRPE 구성 파일은 매우 길고 주석으로 가득 차 있습니다. 찾아서 수정해야 하는 몇 가지 라인이 있습니다.

  • server_address: 이 호스트의 개인 IP 주소로 설정
  • allowed_hosts: Nagios 서버의 개인 IP 주소로 설정
  • command[check_hda1]: /dev/hda1을 루트 파일 시스템 이름으로 변경

앞서 언급한 세 줄은 다음과 같아야 합니다(적절한 값으로 대체).

server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

Nagios 서버가 이를 사용하도록 구성된 경우 실행될 이 파일에 정의된 몇 가지 다른 "명령\이 있습니다. 또한 server_port=5666이 설정되어 있으므로 NRPE는 포트 5666에서 수신 대기합니다. . 해당 포트를 차단하는 방화벽이 있는 경우 Nagios 서버에 대해 개방해야 합니다.

저장하고 종료합니다.

NRPE 다시 시작

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

sudo service nagios-nrpe-server restart

모니터링하려는 호스트에 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 service nagios reload

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

결론

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

행운을 빌어요!