Server 및 Network 모니터링 시스템 개발

DaewoongJeon·2021년 6월 28일
0

Server 및 Network 모니터링 시스템 개발 사업을 수주했다고 가정하고, 이번 글에서 개발 및 공부 과정을 작성해보겠습니다.

1. SNMP protocol

SNMP(Simple Network Management Protocol)는 IP 기반 네트워크상에서 각 장치로부터 주기적으로 여러 관리 정보를 자동으로 수집하거나 실시간으로 상태를 모니터링 및 설정할 수 있는 Protocol 입니다.

A. 동작 방식

  • 기본적으로 관리 주체인 매니저는 에이전트에게 다음과 같은 유형의 메시지를 보낼 수 있습니다.
  1. Get Request : 에이전트에게 원하는 정보를 요청합니다.
  2. Get Next Request : 이미 요청한 정보가 있을 때, 다음 원하는 정보를 요청합니다.
  3. Set Request : 에이전트의 특정 값에 대한 설정을 요청합니다.
  • 에이전트는 매니저에게 다음과 같은 유형의 메시지를 보낼 수 있습니다.
  1. Get Response : 매니저에게 요청받은 정보를 전송합니다.
  2. Trap : 매니저에게 특정 정보를 비동기적으로 알리기 위해 전송합니다.(인터럽트와 유사, 주로 오류 발생 시 알림 용도로 활용)

B. 구성 요소

  • SNMP 관리자 : NMS 프로그램을 활용합니다. 에이전트에게 쿼리를 전송하거나 수신받을 수 있고, MIB 변수를 설정하거나 에이전트로부터 특정 이벤트를 받을 수 있습니다.
  • 관리 장치 : 스위치나 라우터, 서버와 같은 네트워크 장치입니다.
  • SNMP 에이전트 : 관리 장치로부터 관리 정보를 수집합니다. 관리자에게 쿼리를 받으면 이에 대한 응답으로 관리 정보를 전송합니다. 특정 이벤트를 전송할 수도 있습니다.
  • MIB : 관리 정보가 들어있는 데이터베이스 입니다.

C. MIB

MIB(Management Information Base)는 장치의 관리 정보가 들어있는 데이터베이스 입니다.

  • MIB는 위와 같은 트리 구조로 설계되어 있습니다.
  • 각 노드는 OID(Object ID)로 구분되고, Leaf 노드가 실제로 관리되는 객체입니다.

2. TICK Stack

SNMP Protocol을 기반으로 어떤 툴을 활용할까 고민하던 와중에 TICK Stack을 알게 되었습니다. 개발에는 TICK Stack 중 Telegraf, InfluxDB, Kapacitor가 활용됩니다.

  • TICK Stack이란?
    : TICK Stack은 시계열 데이터를 쉽게 저장할 수 있고, 데이터를 쉽게 모니터링할 수 있는 플랫폼을 제공하기 위해 결합된 오픈소스 구성요소 모음입니다.

A. Telegraf

Telegraf는 다양한 장치에서 시계열 데이터를 수집할 수 있는 플러그인 기반 에이전트입니다. 제공되는 플러그인을 사용할 수도 있고, 필요하다면 직접 플러그인을 Go언어로 만들어 사용할 수도 있습니다.

B. InfluxDB

C. Kapacitor

3. 개발 아키텍처

위의 공부 과정을 거쳐 수주한 프로젝트의 아키텍처를 아래와 같이 구성해 보았습니다.

  • Telegraf가 SNMP Input Plugin과 SNMP Trap Input Plugin을 활용하여 각 장치의 네트워크 상태와 서버의 하드웨어 사용률이 담긴 MIB(Management Information Base) 획득
  • Telegraf가 획득한 MIB를 TCP/IP를 통해 Admin에 위치한 InfluxDB에 전송
  • Grafana는 InfluxDB에 저장된 정보를 Dashboard 형태로 Admin의 웹브라우저에 출력
  • Kapacitor는 InfluxDB에 SNMP Trap 신호나 특정 조건에 맞지 않는 데이터가 들어올 경우, Admin에 메일 송신

4. 참고

0개의 댓글