공개 SW 솔루션설치 & 활용가이드 시스템 SW > 자원관리 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide
CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리
- 3-1. 개요 소개 주요기능 Nagios 는 open source 기반의시스템및네트워크모니터링응용프로그램 Enterprise version 을구매하여상업적지원가능및무료로 open source community version 사용가능 지정한호스트, 서비스와네트워크를관찰하고장애가나거나복구되었을때경보발령 네트워크서비스모니터링 / 호스트리소스모니터링 접속이끊어진호스트와도달할수없는호스트를감지하고구별 자동로그파일순환가능 / 중복모니터링호스트구현지원 현재네트워크상태, 알림및문제기록, 로그파일등확인가능 대분류 시스템 SW 소분류자원관리 라이선스형태 GNU General Public License Ver 2 사전설치솔루션 운영체제 Cross-platform 버전 Nagios-4.3.3 특징 보안취약점 개발회사 / 커뮤니티 공식홈페이지 A web server (preferrably Apache) Thomas Boutell's gd library version 1.6.3 or higher Nagios 는 Linux 에서실행되도록디자인되었있으나대부분다른유닉스에서도동작가능 인터넷서비스감시 (SMTP, POP3, HTTP, TCP, PING 등 ) 모니터링호스트서비스 (cpu, 부하, io 상황등 ) 병렬서비스점검메커니즘 / 자원분산제어 취약점 ID : CVE-2016-8641 심각도 : 6.1 MEDIUM(V3) 취약점설명 : Nagios 는로컬권한상승취약점발견, 로컬공격자가이문제를악용하여영향을받는시스템에서상승된루트권한을얻을수있음 대응방안 : 4.2.4 이상으로업데이트 참고경로 : https://security.gentoo.org/glsa/201702-26 Nagios Enterprise/ Nagios community https://www.nagios.org
- 4-2. 기능요약 주요기능 지원여부 네트워크서비스모니터링을할수있다. (SMTP, POP3, HTTP, NNTP, PING, 등 ) 지원 호스트자원모니터링을할수있다. ( 프로세서부하, 디스크사용량, 등 ) 지원 사용자의서비스를체크할플러그인을쉽게개발할수있도록플러그인의디자인을간략화할수있다. 지원 병렬화된서비스체크가가능하다. 지원 다운된호스트와통신이되지않는호스트의탐지와구분을가능하게하는트리구조의네트워크호스트구조정의기능이있다. 서비스또는호스트의문제가발생하거나해결되었을때통보해준다. ( 이메일, SMS, 사용자정의방법 ) 서비스또는호스트이벤트의사전문제해결시실행될이벤트핸들러정의기능이있다. 지원 지원 지원
- 5-3. 실행환경 1. OS CentOS Linux release 7.3.1611 (Core) 환경 2. 사전설치솔루션 php-5.4.16-42.el7.x86_64 httpd-2.4.6-45.el7.centos.4.x86_64 gd-2.0.35-26.el7.x86_64 gd-devel-2.0.35-26.el7.x86_64 gcc-4.8.5-11.el7.x86_64 glibc-2.17-157.el7_3.5.x86_64 glibc-common-2.17-157.el7_3.5.x86_64 openssl-1.0.1e-60.el7.x86_64 perl-5.16.3-291.el7.x86_64 perl-devel-5.16.3-291.el7.x86_64 make-3.82-23.el7.x86_64 3. Nagios package nagios-4.3.2 nagios-plugins-2.2.1
- 6-4. 설치및실행 세부목차 4.1 Create Nagios user 4.2 Install Apache, PHP and other dependencies 4.3 Download Nagios package 4.4 Untar the Downloaded Nagios package 4.5 Compiling Nagios 4.6 Copy directory and change ownership 4.7 Reset nagiosadmin password 4.8 Start httpd and Nagios server 4.9 Open HTTP port for Nagios Dashboard access 4.10 Access the Nagios Dashboard 4.11 Access the Nagios Dashboard 4.12 Untar the Downloaded Nagios plugin 4.13 Compiling Nagios plugin 4.14 Open HTTP port for Nagios Dashboard access
- 7-4. 설치및실행 4.1 Create Nagios user, nagcmd group Nagios package 를설치하기위한 nagios 사용자및 nagcmd 그룹을생성 - useradd nagios - groupadd nagcmd - usermod a G nagcmd nagios
- 8-4. 설치및실행 4.2 Install Apache, PHP and other dependencies nagios 설치에꼭필요한패키지 gcc 는소스컴파일관련패키지, glibc 는라이브러리관련패키지, gd 는그래픽관련패키지 - yum install httpd php gd gd-devel gcc glibc glibc-common openssl perl perl-devel make
- 9-4. 설치및실행 4.3 Download Nagios package http://nagios.org 에서 Nagios core package 를다운로드 - wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.3.2.tar.gz
- 10-4. 설치및실행 4.4 Untar the Downloaded Nagios package 다운로드한 Nagios package 를압축해제 - tar zxvf nagios-4.3.2.tar.gz
- 11-4. 설치및실행 4.5 Compiling Nagios(1/2) Nagios 소스코드를컴파일 - cd nagios-4.0.8 -./configure --with-command-group=nagcmd (configure는소스파일에대한환경설정을해주는명령어이다. 서버환경에맞춰 makefile을생성해주는과정이다.) - make all (make는소스를컴파일하는명령어이다.) - make install (make를통해만들어진설치파일을설치하는명령어이다.) 1 3 2
- 12-4. 설치및실행 4.5 Compiling Nagios(2/2) make install-init -> /etc/init.d 에등록됨 make install-commandmode -> nagios라는 user가없으면여기서에러발생 make install-config -> /usr/local/nagios 에설정파일이생성됨 make install-webconf -> /etc/httpd/conf.d/nagios.conf 생성됨
- 13-4. 설치및실행 4.6 Copy directory and change ownership eventhandlers director 를 /usr/local/nagios/libexec/ directory 에복사 - cp -rvf contrib/eventhandlers/ /usr/local/nagios/libexec/ 복사한 eventhandler directory 의소유권변경 - chown R Nagios:Nagios /usr/local/nagios/libexec/eventhandlers
- 14-4. 설치및실행 4.7 Reset nagiosadmin password Nagios Dashboard에로그인할때, 사용할 password 입력 - ID : nagiosadmin - PW : 사용자지정 - htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
- 15-4. 설치및실행 4.8 Start httpd and Nagios server httpd 및 nagios 서비스시작 ( 기본적으로웹서버가올라와있어야함 ) - Systemctl start httpd.service - Systemctl enable Nagios.service - Systemctl start Nagios.service - Systemctl status httpd.service -> (Atcive : active (running) 상태면서비스시작이성공이다.) - Systemctl status Nagios.service -> (Atcive : active (running) 상태면서비스시작이성공이다.)
- 16-4. 설치및실행 4.9 Open HTTP port for Nagios Dashboard access Nagios dashboar 를접근하기위한 http port 열기 - firewall-cmd --zone=public --add-port=80/tcp --permanent - firewall-cmd --reload
- 17 - < 성공화면 > 4. 설치및실행 4.10 Access the Nagios Dashboard(1/2) 서버의 IP 주소를사용하여 Nagios dashboard에접근 - http://192.168.248.101(server IP address)/nagios HTTP authentication Required Box 생성 - Username : nagiosadmin - Password : 사용자가지정한 password
- 18 - < 성공화면 > 4. 설치및실행 4.10 Access the Nagios Dashboard(2/2) 왼쪽사이드바에서 Services 링크를클릭하면 Nagios dashboard 에서서비스내역을확인 Plugin 을설치하지않으면 critical 로되어다음과같이경고표시가뜨기때문에반드시설치
- 19-4. 설치및실행 4.11 Download Nagios plugin http:// www.nagios-plugins.org 에서 Nagios plugin 을다운로드 - 현재최신 package 는 nagios-plugins-2.0.3 이다. - wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
- 20-4. 설치및실행 4.12 Untar the Downloaded Nagios plugin 다운로드한 Nagios plugin 을압축해제 - tar zxvf nagios-plugins-2.2.1.tar.gz
- 21-4. 설치및실행 4.13 Compiling Nagios plugin Nagios 소스코드를컴파일 - cd Nagios-plugins-2.2.1 -./configure with-command-user=nagios --with-command-group=nagcmd (configure는소스파일에대한환경설정을해주는명령어이다. 서버환경에맞춰 makefile을생성해주는과정이다.) - make all (make는소스를컴파일하는명령어이다.) - make install (make를통해만들어진설치파일을설치하는명령어이다.)
- 22-4. 설치및실행 4.14 Open HTTP port for Nagios Dashboard access plugin 설치이후재접속시몇분후에 Status 가 OK 로변경된것을확인 - plugin 반영은수분정도소요될수있다.
- 23-5. 기능소개 세부목차 5.1 Log file 5.1 Status file 5.1 Config file 5.1 Nagios test scheduling 5.1 Tactical Overview 5.1 Alert History 5.1 Process Info 5.1 Performance Info 5.1 Scheduling Queue
- 24-5. 기능소개 5.1 Log file Log file (/usr/local/nagios/var/nagios.log) nagios가만드는 main log file로 nagios가실행될때부터종료될때까지의모든작업들을기록한다. nagios web interface에서이파일을이용하여 alerts history, notifications, Event log를확인할수있다. 설정에따라하루, 일주일등으로구분하여파일을저장하는것이가능하다. (/var/archives/nagios-날.log의형식으로저장 )
- 25-5. 기능소개 5.2 Status file Status file (/usr/local/nagios/var/status.dat) Nagios가종료될때까지현재상태, comment, 예약종료시간정보등을저장하기위해쓰이는파일이다. CGI가웹인터페이스를통해현재모니터링정보를수집하는데사용한다. 필요한정보를데몬에서사용하는데이터파일로사용자가임의로수정하면안된다.
- 26-5. 기능소개 5.3 Config file Config file (/usr/local/nagios/etc/nagios.cfg) nagios 의메인 config 파일로 nagios 가필요한각종 config 위치, 설정값들을셋팅할수있다.
- 27-5. 기능소개 5.4 Nagios test scheduling Nagios test scheduling 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다. /usr/local/nagios/bin/nagios -s /usr/local/nagios/etc/nagios.cfg
- 28-5. 기능소개 5.5 Tactical Overview Tactical Overview 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다.
- 29-5. 기능소개 5.6 Alert History Alert History 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다.
- 30-5. 기능소개 5.6 Process Info Process Info 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다.
- 31-5. 기능소개 5.8 Performance Info Performance Info 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다.
- 32-5. 기능소개 5.9 Scheduling Queue Scheduling Queue 현재 config 파일을기반으로예상 / 권장 check scheduling 및기타진단정보를볼수있다.
- 33-6. 활용예제 세부목차 6.1 예제소개 6.2 Add the epel repository 6.3 Install nrpe and nagios-plugins 6.4 Configure Nagios Client and Start nrpe service on client 6.5 Add the clients in the configuration file on Nagios server 6.6 Create a servers directory and configure file 6.7 Refresh nagios admin console in the browser
- 34-6. 활용예제 6.1 예제소개 본예제는 Nagios 를사용하여여러대의서버를연결하여모니터링할수있도록구성하는것을 목표로한다. 성능이수집되어야할서버에 Client 를설치해서 Nagios 서버로전송하는방식을사용 Nrpe 를사용하여서버가원격에있는스크립트를수행하여결과를전송받는형태 -> nrpe : 원격서버를모니터링할수있다. 모니터링할서버의 nrpe.cfg 를보고그항목을감시할수있다. OS 환경구성 - Nagios server ( 앞서설치한 Nagios 로사용하기때문에설치과정은생략한다. ) Operating system : CentOS Linux release 7.3.1611 (Core) IP Address : 192.168.248.104/22 - Nagios client Operating System : CentOS Linux release 7.3.1611 (Core) IP Address : 192.168.248.103/22
6. 활용예제 6.2 Add the epel repository add the epel repository and install nrpe, nagios-plugins 공식 CentOS와 Red Hat Enterprise Linux의저장소에포함되지않은패키지를설치하기위해 EPEL repository를설치한다. - yum install epel-release y - 35 -
6. 활용예제 6.3 Install nrpe and nagios-plugins install nrpe, nagios-plugins 모니터링할 Nagios client를추가한다. nrpe와 nagios-plugins는 monitoring target에추가하기위해필요하다. - yum install nrpe nagios-plugins nagios-plugins-users nagios-plugins-load nagios-pluginsswap nagios-plugins-disk nagios-plugins-procs -y - 36 -
6. 활용예제 6.4 Configure Nagios Client and Start nrpe service on client Configure nagios client /etc/nagios/nrpe.cfg 파일을편집하고 Nagios server IP 주소를추가한다. - vi /etc/nagios/nrpe.cfg - allowed_hosts = 127.0.0.1 192.168.248.104 (Nagios server IP) client 에서 nrpe 서비스를재시작한다. - systemctl restart nrpe.service - 37 -
6. 활용예제 6.5 Add the clients in the configuration file on Nagios server Add the clients in the configuration file on Nagios server Nagios server (192.168.248.104) 에서설정파일에 client 추가한다. - vi /usr/local/nagios/etc/nagios.cfg - cfg_dir=/usr/local/nagios/etc/servers <- 주석을제거한다. - 38 -
6. 활용예제 6.6 Create a servers directory and configure file Create a servers directory and configure file /usr/local/nagios/etc/ 에 servers 라는 directory 를생성한다. - mkdir /usr/local/nagios/etc/servers config file을생성한뒤, 모니터링할 client 정보를입력한다. - vi /usr/local/nagios/etc/servers/client.cfg - define host{ use linux-server host_name schoi ( 사용자임의 ) alias schoi ( 사용자임의 ) address 192.168.248.103 (client IP) max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 } Nagios 서버재시작한다. - systemctl restart nagios - 39 -
6. 활용예제 6.7 Refresh nagios admin console in the browser(1/2) Refresh nagios admin console in the browser - 브라우저를이용하여 http://192.168.248.104(serverip)/nagios 접속한다. 기존 nagios 화면이다. Client 추가한뒤 nagios 화면이다. schoi host 가추가된것을확인가능하다. - 40 -
6. 활용예제 6.7 Refresh nagios admin console in the browser(2/2) Refresh nagios admin console in the browser - 브라우저를이용하여 Host Statue 를확인할수있다. - 41 -
- 42-7. FAQ Q 설치시 libexec/ 서브디렉토리가생략되었면, 플러그인들은전부어디에있습니까? & A 플러그인은 Nagios의별도프로젝트로배포되며, Nagios 설치후플러그인을다운로드하고설치해야합니다. 플러그인다운로드링크 ( http://www.nagios.org/download ) Q 설치시 etc/ 서브디렉토리가생략되었다면? & A 정상적으로설치된상태이며, etc/ 서브디렉토리는 make install 을할때자동으로생성되지않습니다. Nagios를위한샘플설정파일을설치하기를원한다면, make install-config 명령어를사용하면됩니다.
- 43-8. 용어정리 용어 PHP 설명 PHP(Hypertext Preprocessor) 는범용성을지닌널리사용되는오픈소스스크립트언어로웹개발및 HTML 에포함하기에적합하다. PHP 는명령줄인터페이스방식의자체인터프리터를제공하여이를통해범용프로그래밍언어로도사용할수있으며그래픽애플리케이션을제작할수도있다. PHP 는 PHP 사용허가서의규정을따라릴리즈된자유소프트웨어지만 PHP 사용허가서는 PHP 라는단어의사용에제한을두는규정을가지고있기때문에 GNU 일반공중사용허가서와호환되지않는다. Cross-platform 크로스플랫폼 (cross-platform) 또는멀티플랫폼 (multi-platform) 은컴퓨터프로그램, 운영체제, 컴퓨터언어, 프로그래밍언어, 컴퓨터소프트웨어등이여러종류의컴퓨터플랫폼에서동작할수있다는것을뜻하는용어다. 크로스플랫폼응용프로그램은둘이상의플랫폼에서실행할수있고, 이러한종류의소프트웨어는멀티플랫폼소프트웨어라고도한다. NNTP NNTP(Network News Transfer Protocol) 는인터넷상의뉴스서버간뉴스를주고받기위한역할을하는프로토콜이다.
Open Source Software Installation & Application Guide 이저작물은크리에이티브커먼즈 [ 저작자표시 비영리 동일조건변경허락 2. 0 대한민국라이선스 ] 에따라이용하실수있습니다.