웹사이트 검색

Icinga를 사용하여 Ubuntu 14.04에서 서버 및 서비스를 모니터링하는 방법


소개

이 튜토리얼에서는 오픈 소스 모니터링 시스템인 Icinga를 Ubuntu 14.04에 설치하는 방법을 살펴보겠습니다. 웹 인터페이스를 통해 네트워크 서비스 및 호스트 리소스를 모니터링할 수 있도록 몇 가지 기본 구성을 다룰 것입니다. 또한 원격 시스템에 에이전트로 설치되어 로컬 리소스(디스크 사용량, 로그인한 사용자 수 등)를 모니터링하는 Nagios Remote Plugin Executor(NRPE)를 활용할 것입니다.

Icinga는 호스트와 서비스를 확인하고 상태를 알려주는 인기 있는 오픈 소스 모니터링 시스템입니다. Icinga는 Nagios의 포크이기 때문에 호환성이 있고 많은 유사점을 공유하며 Nagios에 비해 더 민첩한 개발 주기로 인해 인기를 얻고 있습니다.

전제 조건

이 자습서를 완료하려면 Ubuntu 14.04 VPS에 대한 루트 액세스 권한이 필요합니다. 설정 지침은 여기에서 찾을 수 있습니다(3단계 및 4단계): Ubuntu 14.04를 사용한 초기 서버 설정.

또한 메일 알림 기능을 설정하려면 Postfix를 올바르게 설정해야 합니다. 이에 대한 지침은 Ubuntu 14.04에서 Postfix를 설치하고 설정하는 방법에서 찾을 수 있습니다. Postfix는 Icinga 패키지와 함께 설치되지만 Icinga가 설정된 후에 구성할 수 있습니다.

아이싱가 설치

패키지를 사용하여 Icinga를 설치합니다. 또한 MySQL을 DBMS로 사용합니다. PostgreSQL, SQLite 및 Oracle은 지원되는 다른 옵션입니다.

다음 명령을 실행하여 Icinga PPA를 패키지 관리자에 추가하십시오.

sudo add-apt-repository ppa:formorer/icinga

그런 다음 apt 패키지 데이터베이스를 업데이트합니다.

sudo apt update

이제 apt를 사용하여 Icinga 및 MySQL을 설치합니다.

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

이제 Icinga 설치와 관련된 일련의 프롬프트가 표시됩니다. 다음은 프롬프트 목록과 응답 방법입니다.

  • MySQL 구성: 새 MySQL 루트 사용자 비밀번호 입력
  • PostFix 구성: \인터넷 사이트 선택
  • PostFix 구성: 정규화된 도메인 이름(예: example.com) 입력
  • icinga-cgi 구성: "icingaadmin\ 사용자 암호를 입력합니다(Icinga에 액세스하려면 로그인).
  • icinga-common 구성: 외부 명령을 활성화하려면 "No\를 입력합니다.
  • icinga-idoutils 구성: dbconfig-common을 사용하여 icinga-idoutils에 대한 데이터베이스 구성에 "예\를 입력합니다.
  • icinga-idoutils 구성: "mysql\을 데이터베이스 유형으로 선택
  • icinga-idoutils 구성: MySQL 루트 비밀번호 입력(위에서 방금 할당한 비밀번호)
  • icinga-idoutils 구성: 새 icinga-idoutils 데이터베이스 사용자 암호 입력

이제 Icinga가 설치되었지만 시작하기 전에 몇 가지를 구성해야 합니다. Apache HTTP 서버와 Postfix는 해당 프로세스의 일부로 설치되었습니다.

nagios 그룹에 Apache 사용자(www-data)를 추가합니다.

sudo usermod -a -G nagios www-data

Icinga 이벤트 및 구성을 데이터베이스에 저장하는 ido2db 데몬이 부팅 시 시작되도록 활성화합니다. Icinga 기본 구성 편집:

sudo vi /etc/default/icinga

IDO2DB의 값을 yes로 변경하여 다음과 같이 표시합니다.

IDO2DB=yes

저장하고 종료합니다. 이제 ido2db 서비스를 시작합니다:

sudo service ido2db start

샘플 idoutils.cfg 파일을 Icinga의 활성 구성에 복사하여 idomod 모듈을 활성화합니다.

sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

이제 Icinga가 구성되어 시작할 준비가 되었습니다.

sudo service icinga restart

Icinga 사용자 인터페이스를 사용해 봅시다.

Icinga 사용자 인터페이스에 액세스

http://yourhost/icinga로 이동하고 Icinga 설치 중에 설정한 icingaadmin 로그인을 사용하여 로그인합니다.

Icinga가 다음과 같이 하나의 호스트, localhost(Icinga 서버) 및 7개의 서비스를 모니터링하고 있음을 확인해야 합니다.

상단 행은 단일 모니터링 호스트가 "작동 중\임을 보여주고 하단 행은 7개의 "정상\ 모니터링 서비스가 있음을 보여줍니다.

localhost의 상태가 "Down\인 경우 ping 명령의 권한을 변경해야 할 수 있습니다. 다음 명령을 실행하여 nagios 사용자가 ping을 사용할 수 있도록 허용하십시오. 명령:

sudo chmod u+s `which ping`

모니터링할 호스트와 서비스를 더 추가해 봅시다!

Icinga로 모니터링하는 방법

Icinga로 호스트와 서비스를 모니터링하는 두 가지 주요 방법이 있습니다.

  1. "공개적으로 사용 가능한 서비스\ 모니터링
  2. 데이터를 수집하여 Icinga로 전송하기 위해 원격 호스트에 설치된 에이전트를 통해 모니터링

첫 번째 방법에서 공개적으로 사용 가능한 서비스는 로컬 네트워크 또는 인터넷을 통해 액세스할 수 있는 서비스를 의미합니다. 일반적인 예로는 HTTP, 메일, SSH 및 ICMP ping이 있습니다. 이 방법은 에이전트를 설치할 수 없는(또는 원하지 않는) 시스템을 모니터링하고 사용자 대면 네트워크 인터페이스를 모니터링하는 데 유용합니다.

두 번째 방법을 구현하기 위해 원격 호스트에 NRPE를 에이전트로 설치하여 로컬 리소스를 모니터링합니다. 이를 통해 Icinga는 첫 번째 방법으로는 달성할 수 없는 디스크 사용량, 실행 중인 프로세스 및 기타 시스템 통계와 같은 항목을 모니터링할 수 있습니다.

방법 1: 공개적으로 사용 가능한 서비스 모니터링

첫 번째 방법은 단순히 수신 서비스를 모니터링하기 때문에 이 방법의 구성은 모두 Icinga 서버에서 수행됩니다. 이 방법으로 여러 가지를 모니터링할 수 있으므로 웹 서버의 공용 인터페이스를 모니터링하는 방법을 보여 드리겠습니다.

다음 명령을 사용하여 호스트 이름으로 파일을 만듭니다(yourhost를 자신의 호스트 이름으로 대체).

sudo vi /etc/icinga/objects/yourhost.cfg

이제 다음을 추가하여 host_name 값을 자신의 호스트 이름(두 위치 모두)으로, alias를 호스트 설명으로, address 로 바꿉니다. 호스트의 공용 IP 주소 값:

define host {
        use                     generic-host
        host_name               web-1
        alias                   A Web Server
        address                 107.170.xxx.xxx
}

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

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

sudo service icinga reload

방법 2: 에이전트를 통한 모니터링

앞에서 언급했듯이 우리는 NRPE를 에이전트로 사용하여 Icinga에 대한 원격 호스트 데이터를 수집할 것입니다. 즉, 이 방법으로 모니터링할 모든 호스트에 NRPE를 설치해야 하며 Icinga 서버도 각 호스트에 대한 데이터를 수신하도록 구성해야 합니다.

NRPE 설치를 살펴보겠습니다.

원격 호스트에 NRPE 설치

모니터링하려는 호스트에서 apt를 업데이트합니다.

sudo apt update

이제 NRPE 및 Nagios 플러그인을 설치합니다.

sudo apt install nagios-plugins nagios-nrpe-server

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

df -h /

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

sudo vi /etc/nagios/nrpe.cfg

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

  • server_address: 이 호스트의 사설 IP 주소로 설정
  • allowed_hosts: Icinga 서버의 개인 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

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

저장하고 종료합니다. 그런 다음 NRPE를 다시 시작하여 변경 사항을 적용합니다.

sudo service nagios-nrpe-server restart

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

Icinga 서버 구성에 원격 호스트 추가

Icinga 서버에서 /etc/icinga/objects에서 모니터링하려는 각 원격 호스트에 대한 새 구성 파일을 만듭니다. yourhost를 호스트 이름으로 바꿉니다.

sudo vi /etc/icinga/objects/yourhost.cfg

다음 호스트 정의를 추가하여 host_name 값을 원격 호스트 이름으로 바꾸고(제 예에서는 "wordpress-1\을 사용했습니다) alias 값을 설명으로 바꿉니다. 호스트 및 원격 호스트의 사설 IP 주소가 있는 address 값:

define host {
        use                     generic-host
        host_name               wordpress-1
        alias                   My first wordpress server
        address                 10.128.xxx.xxx
        }

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

핑:

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

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

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

짐:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Load
        check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }

현재 사용자:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Users
        check_command                   check_users!20!50
        }

디스크 공간:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Disk Space
        check_command                   check_all_disks!20%!10%
        }

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

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

sudo service icinga reload

모든 원격 호스트를 모니터링하도록 Icinga 구성을 완료했으면 사용자 인터페이스를 확인해 보겠습니다.

사용자 인터페이스 예

모니터링 방법 중 하나를 사용하여 몇 개의 호스트에서 모니터링을 설정한 후 Icinga 사용자 인터페이스(http://youricingaserver.com/icinga, acingaadmin 로그인)로 이동한 다음 서비스 세부 정보 링크를 클릭합니다. 모니터링을 설정한 모든 서비스 목록이 표시되어야 합니다.

예를 들어 위에서 설명한 구성 파일을 사용하여 모니터링 중인 두 개의 호스트가 있습니다. web-1 HTTP 서비스는 일반 HTTP 포트를 통해 모니터링되고 있으며 웹 서버가 OK 상태로 응답하고 wordpress-1 >에서 모니터링되는 모든 서비스가 정상임을 표시합니다.

Icinga에는 다양한 기능이 있으므로 인터페이스를 자유롭게 탐색하여 호스트 및 서비스에 대해 무엇을 찾을 수 있는지 확인하십시오.

결론

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

행운을 빌어요!