(Python/개발/공개)-SNMP를 이용한 트래픽 모니터링
개요
기존 사용하던
MRTG서버의 노후화로 재구축 및 신규 솔루션 도입 검토 진행
- MRTG처럼 그래프 웹 지원
- Network 장비 트래픽 측정을 위해 SNMP 기반 방식
- 알람 시스템 지원
- InterFace의 Dashboard가 자동 구성
여러 오픈소스 솔루션 검토 중 위 4가지를 만족하는 게 없어 직접 개발 하기로 하였다.
시스템 구성

WEB
직접 개발 하기에는 많은 시간이 소요될 것으로 예상되어
Grafana오픈소스 사용 다양한 그래프 및 플러그인 지원 하여 채택하였다.
SNMP 데이터 수집
SNMP DATA를 넣는 부분을 처음에는PHP로 구축 하려 했지만 쓰레드 및 구조상 어려움이 많아 처음으로Python을 이용하여 개발 진행 하였다.Pyton을 처음 사용
Dashboard
Grafana에 단점은Interface마다panel을 분리 하고 싶으면 수작업으로 진행해야 하는데 48 Port 장비에 경우 48번을 추가 해야 한다.
자동으로Dashboard와panel을 생성해주는 기능이 필요하여 분석 시작Grafana는Sqllite를 사용하며 Data 구조 분석후JSON DATA를 입력하는Python코드 작성
ALARM
알람은 기존에 구축된
Socket서버에 포맷에 맞게 전화번호와 문자 내용을 보내면 알람 발송이 되어 발송하는Client구간만 개발했다.
소스
사용법
예시

특이 사항
Grafana는 5버전과 6버전에 구조 차이가 없어 이상 동작은 없었으며
Dashboard를 자동으로 생성 부분에서 사용하는 코드에InfluxDB는0.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 구조는 차후에 리펙토링 예정이다.