개발자의 노트
article thumbnail
반응형


시스템/네트워크 모니터링 툴인 nagios (발음: 나기오스)를 소스 설치해보자. (CentOS 기준)

소스 설치로 깔끔하게 정리된 글이 없어서 약간의 개고생을 했음.

다른 사람은 개고생 덜하길 바라며.. 아니면 RPM설치를 권고함. 



Nagios (시스템/네트워크 모니터링 툴) 설치

 

 

의존성 패키지 설치

# yum install -y wget gcc glibc glibc-common gd gd-devel make xinetd net-snmp zlib-devel libxml2-devel freetype-devel

 

httpd가 패키지로 설치되어있으면 삭제하자

# rpm -qa | grep httpd

httpd-2.2.3-65.el5.centos.3

설치된 게 있으면 삭제 (안해도 됨)

# rpm -e --nodeps httpd-2.2.3-65.el5.centos.3

혹은

# yum remove httpd-2.2.3-65.el5.centos.3

 

아파치 설치전에 apr(apache portable runtime) arp-util을 설치한다.

# cd /usr/local/src

# wget http://apache.tt.co.kr//apr/apr-1.4.6.tar.gz

# wget http://apache.mirror.cdnetworks.com//apr/apr-util-1.5.1.tar.gz

# tar zxvf apr-1.4.6.tar.gz

# tar zxvf apr-util-1.5.1.tar.gz

# cd apr-1.4.6

# ./configure --prefix=/usr/local/apr

# make && make install

# cd ../apr-util-1.5.1

# ./configure --with-apr=/usr/local/apr

# make && make install

 

아파치 설치시 아래와 같은 에러가 날 경우가 있다.

configure: error: pcre-config for libpcre not found.PCRE is required and available from http://pcre.org/

 

PCRE(Perl Compatible Regular Expressions)도 그냥 설치하자.

# cd /usr/local/src

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz

# tar zxvf pcre-8.32.tar.gz

# cd pcre-8.32

# ./configure

# make && make install

 

이제 아파치 웹서버를 다운받고 설치하자

# cd /usr/local/src

# wget http://ftp.apache-kr.org/httpd/httpd-2.4.3.tar.gz

# tar zxvf httpd-2.4.3.tar.gz

# cp -Rf httpd-2.4.3 /usr/local/apache2

# cd ../apache2

# ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-mods-shared-all --enable-so --enable-rewrite --enable-sll

# make && make install

# vi /etc/ld.so.conf

/usr/local/apache2/lib

/usr/local/apache2/modules

# ldconfig

 

아파치에 nagios 관련한 설정을 먼저 하자.

(추가적으로 nagios를 위한 웹서비스 포트는 기본 80이 아니라 8082번으로 변경하자.)

# vi conf/httpd.conf

# Listen 80

Listen 8082

 

# add nagios

ScriptAlias /nagios/cgi-bin/ “/usr/local/nagios/sbin/”

<Directory "/usr/local/nagios/sbin">

    AllowOverride AuthConfig

    Options ExecCGI

    AuthName "Nagios Access"

    AuthType Basic

    AuthUserFile /usr/local/nagios/etc/htpasswd.users

    require valid-user

    Order allow,deny

    Allow from all

</Directory>

 

Alias /nagios/ “/usr/local/nagios/share/”

<Directory "/usr/local/nagios/share">

    Options None

    AllowOverride AuthConfig

    AuthName "Nagios Access"

    AuthType Basic

    AuthUserFile /usr/local/nagios/etc/htpasswd.users

    require valid-user

    Order allow,deny

    Allow from all

</Directory>

 

아파치를 서비스로 등록하자

# cp ./bin/apachectl /etc/init.d/httpd

# vi /etc/init.d/httpd

#!/bin/sh

#

# 아래 부분 추가

# chkconfig: 2345 90 90

# description: init file for Apache server daemon

# processnmae: /usr/local/apache2/bin/apachectl

# config: /usr/local/apache2/conf/httpd.conf

# pidfile: /usr/local/apache2/logs/httpd.pid

#

# Licensed to the Apache Software Foundation (ASF) under one or more

httpd를 서비스에 등록

# chkconfig --add httpd

httpd가 서비스에 등록되었는지 확인

# chkconfig --list | grep httpd

 

아파치 실행은

# /etc/init.d/httpd start

아파치 중지는

# /etc/init.d/httpd stop

 

다음은 php 설치를 한다.

# /usr/local/src

# wget http://kr1.php.net/get/php-5.4.9.tar.gz/from/this/mirror

# tar zxvf php-5.4.9.tar.gz

# cp -Rf php-5.4.9 /usr/local/php

# cd ../php

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-sigchild

# make && make install

# cp php.ini-production /usr/local/apache2/conf/php.ini

 

아파치에 php설정을 한다

# cd /usr/local/apache2

# vi conf/httpd.conf

LoadModule cgid_module         modules/mod_cgid.so

LoadModule php5_module        modules/libphp5.so

# php

    AddType application/x-httpd-php .php

    AddType application/x-httpd-php-source .phps

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>

 

다음으로 nagios를 설치한다.

데이터와 로그를 위한 폴더를 만들고

# mkdir -p /data/nagios

# mkdir -p /log/nagios

 

우선 nagios를 위한 사용자와 그룹을 추가

# useradd nagios

# groupadd nagcmd

# usermod -a -G nagcmd nagios

# usermod -a -G nagcmd apache

# groupadd nagios

# usermod –a -G nagios nagios

 

다음으로 nagios core plugin을 다운로드 받아서 압축을 푼다

# cd /usr/local/src

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz

# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

# tar zxvf nagios-3.4.3.tar.gz

# tar zxvf nagios-plugins-1.4.16.tar.gz

# cp -Rf nagios /usr/local/nagios

# cp -Rf nagios-plugins-1.4.16 /usr/local/nagios-plugins

 

nagios core 부터 설치하자

# cd ../nagios

# ./configure --prefix=/usr/local/nagios --with-command-group=nagcmd

# make all

# make install

# make install-init

# make install-config

# make install-commandmode

# make install-webconf

# cp -R contrib/eventhandlers/ libexec/

# chown -R nagios:nagios libexec/eventhandlers

# chown nagios.nagcmd /usr/local/nagios/var/rw –

# chmod u+rwx /usr/local/nagios/var/rw

# chmod g+s /usr/local/nagios/var/rw

# chmod o-rwx /usr/local/nagios/var/rw

 

아래처럼 /usr/local/nagios/var other 사용자는 권한이 없으면 된다.

# ll /usr/local/nagios/var

drwxrws--- 2 nagios nagcmd  4096 12??  5 11:54 rw

 

NAGIOS_HOMEAPACHE2_HOME 셋팅

# vi /etc/profile

APACHE_HOME=/usr/local/apache2

export APACHE_HOME

NAGIOS_HOME=/usr/local/nagios

export NAGIOS_HOME

PATH=$PATH:$APACHE_HOME/bin:$NAGIOS_HOME/sbin

export PATH

# source /etc/profile

 

설정파일은 nagiosetc 폴더 아래에 위치한다.

etc/cgi.cfg

etc/nagios.cfg

etc/resource.cfg

etc/objects/commands.cfg

etc/objects/contacts.cfg

etc/objects/localhost.cfg

etc/objects/printer.cfg

etc/objects/switch.cfg

etc/objects/templates.cfg

etc/objects/timeperiods.cfg

etc/objects/windows.cfg

 

필요한 설정파일만 수정해서 사용하면 된다.

# vi etc/nagios.cfg

# log_file=/usr/local/nagios/var/nagios.log

log_file=/log/nagios/nagios.log

 

담당자 이메일 정보 수정

# vi etc/objects/contacts.cfg

email                           misoin@hanmail.net

 

이제, 플러그인을 설치하자.

# cd ../nagios-plugins

# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios

# make && make install

 

nagios에 대한 아파치 인증을 설정

# cd /usr/local/apache2

# ./bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

New password: abcd

Re-type new password: abcd

Adding password for user nagiosadmin

 

nagios.cfg 검증은 아래와 같다. 설정 수정 후 검증 해볼 것!

# nagios -v /usr/local/nagios/etc/nagios.cfg

.

Total Warnings: 0

Total Errors:   0

 

Things look okay - No serious problems were detected during the pre-flight check

 

문제없이 검증이 되었다면, 서비스에 등록하고 실행

# /etc/init.d/nagios start

Starting nagios: done.

 

아파치를 다시 재시작해보자

# /etc/init.d/httpd stop

# /etc/init.d/httpd start

 

이제 브라우저 창에서 http://192.168.0.207:8082/nagios 를 하자.

로그인 창이 나오고, 위에서 설정한 nagiosadmin / abcd 으로 로그인하면

Nagios 화면이 나올것이다.



Nagios 원격서버 모니터링 (NRPE)


이렇게까지만 하면, localhost.cfg 설정에 따라 기본적으로 localhost만 모니터링이 가능하다.

nrpe를 이용해서 다른 클라이언트도 모니터링해보자.

 

nagios 클라이언트는 nrpe를 이용해서 nagios 서버의 접근을 허용하고,

nagios 클라이언트와 nagios 서버가 서로 통신하여 nagios 클라이언트의 서버 상태를 모니터링하게 된다.

 

우선, nagios 서버 역할을 하는 곳에 nrpe를 설치하자.

 

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz

# tar zxvf nrpe-2.13.tar.gz

# cp -Rf nrpe-2.13 /usr/local/nrpe

 

다음은 nrpe 설치

# cd ../nrpe/

# ./configure --prefix=/usr/local/nagios

# make && make all

# cp ./src/check_nrpe /usr/local/nagios/libexec/

# cp ./src/nrpe /usr/local/nagios/bin

# cp sample-config/nrpe.cfg /usr/local/nagios/etc/

# cd /usr/local/nagios

# vi etc/nrpe.cfg

 

nrpe 명령어 추가

# vi etc/objects/commands.cfg

# 'check-nrpe' command definition

define command{

        command_name    check_nrpe

        command_line    /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

        }

 

이제 nagios 클라이언트들의 정보를 nagios 서버에 설정할 차례이다.

우리는 총 7대의 서버를 모니터링할 것이다. (본인꺼 포함)

 

proxy1 (192.168.0.201)

was1 (192.168.0.202)

was2 (192.168.0.203)

storage1 (192.168.0.204)

storage2 (192.168.0.205)

maindb (192.168.0.206)

=========================

localhost (192.168.0.207)

 

위의 6 nagios 클라이언트를 설정하자.

localhost.cfg를 복사해서 몇가지 값만 바꿔주면 된다. (host_name, alias, address 이런 부분만 찾아서 수정해줌)

# mkdir –p etc/objects/clients

# cp etc/objects/localhost.cfg etc/objects/clients/proxy1.cfg

# vi etc/objects/clients/proxy1.cfg

# host_name, alias, address 이런 부분만 찾아서 수정해주자

# proxy1의 경우 host_name proxy1, alias proxy1, address 192.168.0.201)

이렇게 6개를 만든다. (proxy1.cfg, was1.cfg, was2.cfg, storage1.cfg, storage2.cfg, maindb.cfg)

 

설정파일 내에는 hostgroup 정의하는 부분이 있는데.

서버들 중에 서로 관련있는 것들끼리 그룹으로 묶으면 보기에 좋아진다.

예를 들어, was1, was2는 같은 그룹으로 묶어서 정의하면 되겠다. (was1.cfg, was2.cfg 에서)

 

###############################################################################

###############################################################################

#

# HOST GROUP DEFINITION

#

###############################################################################

###############################################################################

 

# Define an optional hostgroup for Linux machines

 

define hostgroup{

        hostgroup_name  linux-was-servers ; The name of the hostgroup

        alias           Linux WAS Servers ; Long name of the group

        members         was1, was2     ; Comma separated list of hosts that belong to this group

        }

 

다음으로, 생성한 클라이언트 cfg 파일을 nagios.cfg에 등록

# vi etc/nagios.cfg

# Definitions for monitoring the local (Linux) host

cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

 

# Definition for monitoring the remote (Linux) host

cfg_file=/usr/local/nagios/etc/objects/clients/proxy1.cfg

cfg_file=/usr/local/nagios/etc/objects/clients/was1.cfg

cfg_file=/usr/local/nagios/etc/objects/clients/was2.cfg

cfg_file=/usr/local/nagios/etc/objects/clients/storage1.cfg

cfg_file=/usr/local/nagios/etc/objects/clients/storage2.cfg

cfg_file=/usr/local/nagios/etc/objects/clients/maindb.cfg

 

설정파일을 검증해보고

# nagios -v /usr/local/nagios/etc/nagios.cfg

 

이상이 없으면 nagios를 재시작

# /etc/init.d/nagios restart

 

이제는 nagios 클라이언트를 할 차례이다.

nagios 클라이언트에는 core는 필요없고, nagios plugin nrpe를 설치해주면 된다.

 

의존성 패키지 설치

# yum install -y wget gcc glibc glibc-common gd gd-devel make net-snmp zlib-devel

 

우선 nagios를 위한 사용자와 그룹을 추가

# useradd nagios

# groupadd nagcmd

# usermod -a -G nagcmd nagios

# groupadd nagios

# usermod –a -G nagios nagios

 

NAGIOS_HOME APACHE2_HOME 셋팅

# vi /etc/profile

NAGIOS_HOME=/usr/local/nagios

export NAGIOS_HOME

PATH=$PATH:$NAGIOS_HOME/sbin

export PATH

# source /etc/profile

 

nrpe 포드 개방 (5666)

# iptables -I INPUT -m tcp -p tcp --dport 5666 -j ACCEPT

 

nagios plugin nrpe를 다운로드

# mkdir –p /usr/local/nagios

# cd /usr/local/src

# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz

# tar zxvf nagios-plugins-1.4.16.tar.gz

# tar zxvf nrpe-2.13.tar.gz

# cp -Rf nagios-plugins-1.4.16 /usr/local/nagios-plugins

# cp -Rf nrpe-2.13 /usr/local/nrpe

 

플러그인 설치

# cd ../nagios-plugins

# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios

# make && make install

 

다음은 nrpe 설치

# cd /usr/local/nrpe/

# ./configure --prefix=/usr/local/nagios

# make && make all

# mkdir –p /usr/local/nagios/etc

# mkdir -p /usr/local/nagios/bin

# cp ./src/check_nrpe /usr/local/nagios/libexec/

# cp ./src/nrpe /usr/local/nagios/bin

# cp sample-config/nrpe.cfg /usr/local/nagios/etc/

# cd /usr/local/nagios

# chown -R nagios:nagios bin

# chown -R nagios:nagios etc

# chown -R nagios:nagios libexec

# chown -R nagios:nagios share

# vi etc/nrpe.cfg

# allowed_hosts=127.0.0.1

allowed_hosts=192.168.0.207

 

nrpe를 서비스로 등록하자 (xinetd를 이용함)

# chkconfig --level 2345 xinetd on

# cd /etc/xinetd.d

# vi nrpe

service nrpe

{

    flags = REUSE

    type = UNLISTED

    port = 5666

    socket_type = stream

    wait = no

    user = nagios

    group = nagios

    server = /usr/local/nagios/bin/nrpe

    server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd

    log_on_failure += USERID

    disable = NO

    only_from = 192.168.0.207

}

위에서 only_from를 설정하지 않으면 아무 서버나 접근 가능

 

# vi /etc/services

nrpe            5666/tcp                        # nagios NRPE

 

xinetd를 재구동하자.

# /etc/init.d/xinetd restart

 

nrpe 구동확인

# netstat -nap |grep 5666

tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      3015/xinetd

 

다시, nagios 서버로 돌아와서, 클라이언트로 테스트를 해보자

# cd /usr/local/nagios

# ./libexec/check_nrpe -H 192.168.0.201 -c check_load

OK - load average: 0.00, 0.00, 0.00|load1=0.000;15.000;30.000;0; load5=0.000;10.000;25.000;0; load15=0.000;5.000;20.000;0;

 

성공적으로 결과가 나온다면, 다시 브라우저에서 http://192.168.0.207:8082/nagios 를 해보자

왼쪽 메뉴에서 Map을 클릭하면 nagios 클라이언트가 하나 더 추가되었을 것이다


많은 서버를 한번에 관리하기 좋은 툴이라고 하겠다.. 




profile

개발자의 노트

@곽코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!