nagios 설치 , telegram 연동하기

| 2021년 6월 23일 | 0 Comments

Nagios는 널리 사용되는 오픈 소스 모니터링 시스템입니다. 서버를 모니터링하여 중요한 서비스가 실행 중임을 알 수 있습니다.

– 서버 환경

Ubuntu 18.04

 

step 1 – installing nagios

nagios 서버에 필요한 패키지들 install


sudo apt update

sudo apt install autoconf gcc make unzip libgd-dev libmcrypt-dev libssl-dev dc   

snmp libnet-snmp-perl gettext

 

curl 명령어를 통해서 nagios 다운로드

cd /usr/local/src ( 경로는 자유롭게 )

curl -L -O https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.4.tar.gz

tar zxf nagios4.4.4.tar.gz

cd nagioscore-nagios-4.4.4

구성스크립트 실행, Apache 구성 디렉터리 지정
 ./configure –with-httpd-conf=/etc/apache2/sites-enabled

-configure 명령어 실행후 output


*** Configuration summary for nagios 4.4.4 2019-07-29 ***:

General Options:
————————-
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: /run/nagios.lock
Check result directory: /usr/local/nagios/var/spool/checkresults
Init directory: /lib/systemd/system
Apache conf.d directory: /etc/apache2/sites-enabled
Mail program: /bin/mail
Host OS: linux-gnu
IOBroker Method: epoll

Web Interface Options:
————————
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP):


Review the options above for accuracy. If they look okay,
type ‘make all’ to compile the main program and CGIs.


make 명령어로 nagios 컴파일진행
 # make all

nagios 사용자 및 그룹을 생성합니다
 # sudo make install-groups-users

make 명령어를 실행하여 nagios 서비스 파일 및 샘플 구성 파일을 설치합니다.
 # sudo make install
 # sudo make install-daemoninit
 # sudo make install-commandmode
 # sudo make install-config

Apache를 사용하여 nagios 인터페이스를 제공합니다. 다음 명령어를 실행하여 apache 구성요소 설치 및 설정
 # sudo make install-webconf

a2enmod 명령어를 통해서 apache rewrite 그리고 cgi 모듈 활성화한다.
 # sudo a2enmod rewrite
 # sudo a2enmod cgi

웹 인터페이스를 통해서 Nagios에 외부 명령을 실행하려면 nagios 그룹에 웹 서버 사용자 WWW-date를 추가 하세요
 # sudo usermod -a -G nagios www-data

nagios 웹 인터페이스를 엑세스 할 수 잇는 계정 생성
# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

계정과 패스워드를 기억해야 nagios 웹페이지 접속이 가능합니다.
주의 : 만약 nagiosadmin 이외의 사용자를 생성하는 경우 /usr/loca/nagios/etc/cgi.cfg에서 편집해야합니다.

 sudo systemctl restart apache2


Step 2 — Installing the Nagios Plugins
nagios
를 모니터링하기 위한 50가지 이상의 서비스 설치


 cd /usr/local/src/ (경로는 자유롭게 저는 같은 경로를 사용하겠습니다.)

 # curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

 # tar zxf nagios-plugins-2.2.1.tar.gz

 cd nagios-plugins-2.2.1

구성요소 설치
 ./configure

플러그인 설치
 # make
 # sudo make install

원격 서버를 모니터링 하려면 플러그인이 하나 더 필요합니다.

Step 3 — Installing the check_nrpe Plugin
nrpe
를 사용하여 모니터링 하기위한 nrpe 다운로드


 # cd /usr/local/src/ 경로는 자유롭게 지정하세요

 # curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

 # tar zxf nrpe-3.2.1.tar.gz 

 # cd nrpe-3.2.1

check_nrpe 구성
 # ./configure
 # make check_nrpe
 # sudo make install-plugin

Step 4 — Configuring Nagios


nagios 서버 구성파일 수정을 합니다.
 # sudo vim /usr/local/nagios/etc/nagios.cfg

파일에서 이 줄을 찾습니다.


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

이 줄에서 앞에 있는 주석을 제거해줍니다.
cfg_dir=/usr/local/nagios/etc/servers

이제 모니터링할 서버들의 구성요소를 저장할 디렉토리를 생성합니다.
# sudo mkdir /usr/loca/nagios/etc/servers

연락처 구성요소파일을 열어 자신의 이메일 주소를 수정해 줍니다.

# vim /usr/local/nagios/etc/objects/contacts.cfg ( 텔레그램으로 연동시 주석처리 )


define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email your_email@your_domain.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

저장 후 종료

# vim /usr/local/nagios/etc/objects/commands.cfg


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

위 구문을 추가해준다.

sudo systemctl start nagios

 

Step 5 — Accessing the Nagios Web Interface


http://nagios_server_public_ip/nagios.
nagios
웹페이지를 열어서 step 1 에서 지정해줬던 웹페이지 아이디와 비밀번호를 입력합니다.

 

 

Step 6 — Installing Nagios Plugins and NRPE Daemon on a Host


nagios 서버로 모니터링을 할 호스트를 추가 합니다.

호스트에 NRPE를 설치하고 플러그인을 설치한 다음 호스트를 모니터링하도록 nagios 서버를 구성합니다.

 ssh root@your_monitored_server_ip

 # sudo useradd nagios 

 sudo apt update
 # sudo apt install autoconf gcc libmcrypt-dev make libssl-dev wget dc build-essential gettext

nrpe 필수 구성요소를 설치합니다.

 cd /usr/local/src 경로는 자유롭게 지정합니다.
 # curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

 tar zxf nagios-plugins-2.2.1.tar.gz
 # cd nagios-plugins-2.2.1

플러그인 구성하기

# ./configure

플러그인 컴파일

# make

명령어를 통해 실행 설치

# sudo make install

nrpe 데몬을 설치해 줍니다.

# cd /usr/local/nagios
# curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

# tar zxf nrpe-3.2.1.tar.gz
# cd nrpe-3.2.1

configure nrpe 진행

# ./configure

nrpe nrpe 필수 스크립트를 실행해줍니다.

# make nrpe
# sudo make install-daemon
# sudo make install-config
# sudo make install-init

편집기로 밑에 경로를 열어줍니다.
# sudo vim /usr/local/nagios/etc/nrpe.cfg

밑에 라인을 찾아서 추가해 줍니다.


allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip(nagios 서버 ip)

command[check_vda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1

저장후 편집기를 종료해줍니다.

# sudo systemctl start nrpe.service
# sudo systemctl status nrpe.service

사진 첨부

그 후 방화벽을 통해서 port 5666 포트를 열어줍니다.

모니터링할 호스트의 설정은 끝이고 다시 nagios 서버로 돌아가서 nrpe로 통신을 확인합니다.

# /usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip

아래 문구가 출력되면 정상적으로 통신중 입니다.
Output
NRPE v3.2.1

Step 7 — Monitoring Hosts with Nagios


이제 nagios를 사용하여 호스트를 모니터링하려면 모티터링할 항목을 지정하는 각 호스트에 대한 구성 파일을 추가합니다.

모니터링할 각 호스트에 대한 새 구성 파일을 생성해 줍니다.
# sudo vim /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

define host {
use linux-server
host_name your_monitored_server_host_name
alias My client server
address your_monitored_server_private_ip
max_check_attempts 5
check_period 24×7
notification_interval 30
notification_period 24×7
}

define service {
use generic-service
host_name your_monitored_server_host_name
service_description Load average
check_command check_nrpe!check_load
}

define service {
use generic-service
host_name your_monitored_server_host_name
service_description /dev/vda1 free space
check_command check_nrpe!check_vda1
}

저장후 편집기를 종료합니다.

nagios를 재시작 해줍니다.

# sudo systemctl restart nagios


nagios telegram
연동 하기


nagios 텔래그램 연동

 # wget -O /usr/local/bin/nagios_telegram.py https://raw.githubusercontent.com/pommi/telegram_nagios/master/telegram_nagios.py

 # chmod 755 /usr/local/bin/nagios_telegram.py

 # apt install python-pip

 # pip install twx.botapi


텔레그램 Nagios bot 만들기


텔레그램에서 botfather 봇을 추가해 줍니다.

/newbot을 클릭 후 위 사진과 같이 nagios 봇을 추가해주시면 봇이 생성됩니다. 

bot father를 통해서 봇을 새롭게 생성을 하게되면 HTTP_API 토큰값을 받을 수 있으며, 이 값을 통해서 nagios와 연동해 전송할 수 있습니다.



이제 Chat ID값을 알아보기 위해 아래와 같이 값을 확인해봅시다.

위에 t.me/ 로 시작하는 공개링크를 들어가게 되면 아래와 같이 봇을 시작할 수 있습니다.


봇을 시작하면 브라우저 입력창에 아래와 같이 입력합니다.

https://api.telegram.org/botHTTP_API/getupdates

telegram 연동 설정파일 수정

cd /usr/local/nagios/etc/objects

vi contact.cfg

모든 내용 주석처리 후 아래 내용 추가

define contact{

contact_name telegram

alias telegram

service_notification_period 24×7

host_notification_period 24×7

service_notification_options w,u,c,r

host_notification_options d,r

service_notification_commands notify-service-by-telegram

host_notification_commands notify-host-by-telegram

}

define contactgroup{

contactgroup_name admins

alias Nagios Administrators

members telegram

}

 vi commands.cfg

맨아래에 내용 추가
봇을 만들때 사용하던 HTTP_API값을 넣어줍니다.

define command {

command_name notify-host-by-telegram

command_line /usr/local/bin/nagios_telegram.py –token HTTP_API –object_type host –contact “$USER2$” –notificationtype “$NOTIFICATIONTYPE$” –hoststate “$HOSTSTATE$” –hostname “$HOSTNAME$” –hostaddress “$HOSTADDRESS$” –output “$HOSTOUTPUT$”

}

define command {

command_name notify-service-by-telegram

command_line /usr/local/bin/nagios_telegram.py –token HTTP_API –object_type service –contact “$USER2$” –notificationtype “$NOTIFICATIONTYPE$” –servicestate “$SERVICESTATE$” –hostname “$HOSTNAME$” –servicedesc “$SERVICEDESC$” –output “$SERVICEOUTPUT$”

}

 

 # cd /usr/local/nagios/etc/

 # vi resource.cfg

모든 내용 주석처리 후, 아래 내용 추가
봇을 만들때, ID값과, HTTP_API값을 추가해주면 됩니다.

$USER1$=/usr/local/nagios/libexec

$USER2$=ID

$USER3$=HTTP_API

4.텔래그램이 정상적으로 발송되는지 확인하기 위한 테스트

/usr/local/bin/nagios_telegram.py –token HTTP_API –object_type service –contact “ID” –servicestate “OK” –hostname “test” –servicedesc “load” –output “OK – load average: 0.02 0.01 0.01

service nagios restart

 

Category: 가상화/클라우드

Avatar

About the Author ()