(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 구조는 차후에 리펙토링 예정이다.