(Python/개발/공개)-SNMP를 이용한 트래픽 모니터링

1 minute read

개요

기존 사용하던 MRTG 서버의 노후화로 재구축 및 신규 솔루션 도입 검토 진행

  1. MRTG처럼 그래프 웹 지원
  2. Network 장비 트래픽 측정을 위해 SNMP 기반 방식
  3. 알람 시스템 지원
  4. InterFace의 Dashboard가 자동 구성

여러 오픈소스 솔루션 검토 중 위 4가지를 만족하는 게 없어 직접 개발 하기로 하였다.


시스템 구성

구조


WEB

직접 개발 하기에는 많은 시간이 소요될 것으로 예상되어 Grafana 오픈소스 사용 다양한 그래프 및 플러그인 지원 하여 채택하였다.


SNMP 데이터 수집

SNMP DATA를 넣는 부분을 처음에는 PHP로 구축 하려 했지만 쓰레드 및 구조상 어려움이 많아 처음으로 Python을 이용하여 개발 진행 하였다.
Pyton을 처음 사용


Dashboard

Grafana에 단점은 Interface 마다 panel을 분리 하고 싶으면 수작업으로 진행해야 하는데 48 Port 장비에 경우 48번을 추가 해야 한다.
자동으로 Dashboardpanel을 생성해주는 기능이 필요하여 분석 시작 GrafanaSqllite를 사용하며 Data 구조 분석후 JSON DATA를 입력하는 Python 코드 작성


ALARM

알람은 기존에 구축된 Socket서버에 포맷에 맞게 전화번호와 문자 내용을 보내면 알람 발송이 되어 발송하는 Client 구간만 개발했다.


소스

GitHub Source


사용법

PPT 참고


예시

예시


특이 사항

Grafana는 5버전과 6버전에 구조 차이가 없어 이상 동작은 없었으며
Dashboard를 자동으로 생성 부분에서 사용하는 코드에 InfluxDB0.2 버전과 1.7 버전에 데이터 전달받는 값이 달라 소스 수정이 필요했다.

    #DashBoard_Auto_Create/sqlite3worker.py
    #InfluxDB 1.7 버전은 response 데이터가 달라 list[1]이다
    81 body['title'] = self.server_ip + '-' + list[0]  
    83 body['targets'][0]['tags'][1]['value'] = list[0]  

마무리

개발 기간은 1주일 정도 소요 됐으며 처음 Python을 사용했지만 문법및 구조가 쉽고 재밌었던 언어였다.
Agent 구조는 차후에 리펙토링 예정이다.

Updated: