Nagios (모니터링)

Written by 한성빈 on
Nagios (모니터링)

Nagios

Nagios 실습

도커 환경에서 Nagios 실습

Nagios 란?

  • Nagios는 역사가 깊은 시스템 및 네트워크 모니터링 파수꾼이라고 한다. 신뢰도가 높으며 자유롭게 커스터마이징이 가능하며, 처음 접한 사람들은 어렵게 다가올수도 있다. 그러나 그런 복잡한 설정은 Nagios의 강점이라고 한다. 어떤 모니터링 작업이든 사용자에 맞게 조정을 할 수 있기 때문이다. 디자인은 떨어지지만 성능과 신뢰도가 이를 보증한다고 한다.
  • Nagios는 원래 Linux에서 실행되도록 디자인되어 졌음에도 불구하고 대부분의 다른 유닉스에서도 잘 작동한다.

주요 특징으로는

  • Nagios는 시스템 및 네트워크 모니터링 응용프로그램으로 지정한 호스트와 서비스를 관찰하고 장애가 나거나 복구되었을 때 경보를 발령해준다.
  • IP 주소로 접근 가능한 라우터나 스위치, 방화벽 같은 네트워크 장치에 대한 모니터링 서비스 제공

24(시)X7(일)동안 중단 없이 서버가 사용하는 자원들까지도 모니터링

  • Nagios 모니터링 구성은 사용자가 구성을 텍스트 파일로 입력하도록 되어있다. (Zabbix는 URI에서 가능)

즉, Nagios는 서버의 호스트를 등록하고 그 호스트에서 모니터링할 서비스들을 cfg형식으로 작성하여 등록한다

모니터링 필요한 패키지

  • Nagios plugin : 모니터링할 수 있는 다양한 옵션들, 이 플로그인을 사용해서 원하는 모니터링을 설정할 수 있다. ssh를 통해 원격지의 정보를 주고받는다.
  • Nrpe Plugin: 원격 서버를 모니터링 할 수 있다. 두개의 서버 모두 nagios가 설치되어 있어야하고, 모니터링 할 서버의 nrpe.cfg를 보고 그 항목을 감시할 수 있다.

Untitled

모니터링 구성 실습

  • Default로 Localhost로 모니터링
  • 기존 Zabbix 서버를 클라이언트로 선정 서버는 Docker로 구축한 Nagios
  • Nagios서버

Untitled 1

  • nagios/etc/object/ 경로에 존재하는 cfg별로 linux, window, web등등 템플릿이 나눠져있으며 각각 템플릿을 복사하여 cfg를 수정할 수 있다. 사용자가 원하는 템플릿을 이용하며 각각 cfg안에는 등록될 host와 서비스들을 등록할 수 있다. (ex) check_commands ping
    1. 0ms – 500.0ms: 이 숫자는 RTT(Round Trip Time)로서 Ping 보내 돌아온 시간을 의미하고, 시간내에 있는 경우 경고(Warning) 상태를 표시하고 500ms 이상인 경우 Error on Down 상태로표시된다.

ping 20% ~ 60%이 손실되면 경고상태로 표시하고, 그 이상이라면 Error or Down 상태로 표시하라는 의미 ping 명령어는 기본적으로 5개의 패킷을 보내 테스트한다.

뱅(!) 문자를 사용하여 명령 이름(및 서로)에서 개별 인수를 분리할 수 있다.

Untitled 2

각각 호스트도 등록한다.

Untitled 3 또한 각각 호스트 그룹도 지정할 수 있다

Untitled 4

Untitled 5

  • nagios/etc/nagios.cfg에는 각각 cfg로 구성한 파일들을 include 설정해준다.

모니터링할 Client

  • 모니터링할 Client에서는 apt install nagios-nrpe-server nagios-plugins 통해 nrpe 서버와 플러그인을 설치한다. 왜냐하면 각각 nrpe와 플러그인이 설치되어야 원격지의 정보로 서로 전달을 받을 수 있다.
  • /etc/nagios/nrpe.cfg에서 허용할 서버 ip를 등록해준다 , 붙임으로써 여러 개의 ip를 허용할 수 있다.

Untitled 6

  • 바꾼 후 재실행
  • 서버에서 check_nrpe -H (클라이언트 IP)를 통해 통신되는지 확인 할 수있다.

Untitled 7

  • /nagios/libexec 경로에 설치된 프로그램을 통해 ./check_nrpe -H 를 입력한다.
  • cfg서비스를 정의 모니터링 사용할 때 사용되는 프로그램이다.

Untitled 8

이와 같이 NREP 버전이 뜬다면 통신이 되는 것이다. (정상)

결과

Untitled 9

Untitled 10

(Host Group)

Untitled 11

Nagios 스위치 모니터링

  • 네트워크, 스위치 모니터링 같은 경우는 SNMP프로토콜을 사용하여 모니터링을 진행한다.
  • SNMP 프로토콜 경우 간이 망 관리 프로토콜이라고 하며 IP 네트워크상의 장치로부터 정보를 수집 및 관리하고 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜이다. SNMP는 네트워크 7계층 중에서 응용 계층에 해당하는 프로토콜로 TCP/IP 기반이며 메시지 교환에 의해 통신이 이루어진다.

스위치 모니터링 실습

우선 모니터링 할 스위치에 SNMP 프로토콜을 설정한다. SNMP 프로토콜 과정에서 Community String이라는 인증 과정을 설정해주는데 이 Community Strig이 MIB 정보를 주고받기 위해 인증 과정에서 일종의 비밀번호인 Community String을 사용한다. 즉 SNMP 서버에서 해당 스위치에 연동하기 위해서는 이 Community String을 통해 진행한다.

SNMP Version

Untitled 12

Nagios 스위치 구성

  • SNMP 설정이 된 스위치 Community String을 잘 기억하고 Nagios 서버 구성을 시작한다.
  • Nagios에서 스위치 연동하기위해서는 Nagios Plugin Snmp Server를 설치 진행한다.
  • 플러그인이 설치되면

Untitled 13

  • 위 사진처럼 libexec snmp 스크립트가 생성되며, 이를 통해 snmp에 대한 서비스를 등록할 수 있다.
  • 기존의 앞서 말했던 템플릿 중 스위치 템플릿을 복사하여 호스트를 등록하고 서비스를 등록한다.

Untitled 14

Untitled 15

호스트와 호스트그룹 등록

Untitled 16

  • 모니터링 할 서비스 추가 (ping, uptime, Port Status)
  • -C 뒤에 스위치에 설정한 Community String 입력
  • 추가적으로 설명할 Port Status확인할 경우 ifOperStatus를 사용한다. Interface의 상태를 보고 장애인지 아닌지를 판별하는것이다.
  • ifOperStatus.() 안에 들어갈 숫자는 포트별로 status가 가능하다. 이 숫자는 oid숫자로 들어가는데 해당 스위치 포트 oid를 확인하기 위해서는

Untitled 17

  • snmpwalk를 통해 oid를 확인할 수 있다. (ex 10101 -> 1Port)
  • snmpwalk를 이용하면 시스템의 정보를 수집할 수 있다.
  • oid란? 장비가 갖고있는 여러가지 정보 중에서 정보의 이름을 가르키는 인덱스라고 생각하면된다.

Untitled 18

마지막으로 include하고 마무리

Untitled 19

Nagios Alert 설정

  • Nagios 모니터링 메일 알림설정
  • Nagios 텔레그램, 메일, sms 등 발생하는 Alert를 보낼 수 있다.

Nagios SMTP 메일 Alert

  • 우선은 SMTP 구성하기위해 기존의 sendemail이라는 툴이 필요하다.
  • 설치진행 apt install sendemail
  • 설치 후,

Untitled 20

  • 쉽게 연락처 정보를 등록해준다고 생각하면 것 같다. Contact 파일에 해당 이메일 정보를 등록한다.

Untitled 21

  • 앞으로 Commads를 구성할건데 그 전에 사용될 매크로를 설정해준다. (smtp정보)

Untitled 22

  • commands구성 모습이다.
  • f : 보낸 사람의 사서함
  • t : 받는 사람의 사서함
  • s: SMTP 서버의 도메인 이름 또는 IP
  • u: 이메일 제목
  • xu: SMTP 인증 사용자 이름
  • xp: SMTP의 인증 암호
  • m: 이메일의 내용
  • 아직 smtp메일이 보내지지 않는 문제점이 발생하였다. 서버에서 수동으로 smtp 메일 전송은

Untitled 23

Untitled 24