상세 컨텐츠

본문 제목

Splunk를 이용하여 Cisco Router의 전용회선 사용률 모니터링 개발

카테고리 없음

by Keunwoo.LEE 2022. 11. 10. 15:15

본문

반응형

1. 개요

- 별도의 네트워크 모니터링 툴이 존재하지만, Splunk를 통한 통합대시보드 환경에서 중요한 전용회선의 모니터링이 필요하게 됨
- Splunk에 Simple SNMP Getter를 설치하여 SNMP OID값을 Polling 한 후 그 값을 기준으로 BPS 계산 구현

 

2. Simple SNMP Getter 설치

3. OID값 구하기

  • 라우터에서 Interface index 번호 구하기
Router#show snmp mib ifmib ifindex se0/3/0
Interface = Serial0/3/0, Ifindex = 14
  • SNMP Walker 툴을 이용하여 OID 검색 (필자는 Whatsup을 사용했지만 검색을 하면 여러종류의 무료 snmp walker를 구할 수 있음)

SNMP MIB Walker를 이용하여 OID값 찾기

  • OID 1.3.6.1.2.1.2.2.1 이 라우터의 Interface 관련 정보이기 때문에 그 하위를 검색하면 interface 관련 정보가 나열됨
  • OID 1.3.6.1.2.1.2.2.1.1 = ifIndex
  • OID 1.3.6.1.2.1.2.2.1.10 = inputOctetcs
  • OID 1.3.6.1.2.1.2.2.1.16 = outputOctetcs
  • 라우터에서 확인한 Interface index 번호(se0/3/0 기준 "14")를 위 OID 값에 결합하면 아래와 같음
    - inputOctets = 1.3.6.1.2.1.2.2.1.10.14
    - outputOctets = 1.3.6.1.2.1.2.2.1.16.14

4. Polling 구현

  • 앱 -> Simple SNMP Getter -> Create New Input
  • 위에서 구한 OID 값을 기준으로 다음과 같이 설정

Splunk Simple SNMP Getter 설정

5. 수집된 데이터 확인

Splunk 검색 화면

6. SPL 작성

  • 정해진 시간동안 주고 받은 데이터량을 기준으로 델타값을 구하면 bps를 구할 수 있음
  • 위에 설정한 Polling을 예를들면 : 10 초동안 100 바이트를 전송했으면, 10 Byte/s가 되며, bps로 변환하면 80 bit/s가 됨
  • 이 값을 기준으로 전용회선 속도 기준으로 사용률을 구함
index=main sourcetype=snmp source=snmp://hdcard_v4408_1
| sort _time
| eval temp=split(_raw,",")
| eval recv=mvindex(temp,0)
| eval send=mvindex(temp,1)
| fields - temp
| delta recv as d_recv p=1
| delta send as d_send p=1
| delta _time as d_time p=1
| eval recv_bps=(d_recv*8) / d_time / 5120
| eval send_bps=(d_send*8) / d_time / 5120
| table _time, _raw, recv_bps, send_bps
| timechart eval(round(max(send_bps),0)) as Tx eval(round(max(recv_bps),0)) as Rx

-- 해석 --
index=main sourcetype=snmp source=snmp://hdcard_v4408_1 # 데이터 검색
| sort _time                                            # 시간기준 내림차순으로 정렬
| eval temp=split(_raw,",")                             # input, output 값을 comma 값을 기준으로 분할하여 temp로 저장
| eval recv=mvindex(temp,0)                             # 2개로 분할된 값중 0번을 recv로 설정
| eval send=mvindex(temp,1)                             # 2개로 분할된 값중 1번을 send로 설정
| fields - temp                                         # 이제 필요없는 temp 필드 삭제
| delta recv as d_recv p=1                              # recv 값의 델타값 구함 (이전 첫번째 값과의 델타값)
| delta send as d_send p=1                              # send 값의 델타값 구함 (이전 첫번째 값과의 델타값)
| delta _time as d_time p=1                             # _time 값의 델타값 구함 (이전 첫번째 값과의 델타값)
| eval recv_bps=(d_recv*8) / d_time / 5120              # recv_bps를 구한 후 회선속도 기준 사용률 구함
| eval send_bps=(d_send*8) / d_time / 5120              # send_bps를 구한 후 회선속도 기준 사용률 구함
| table _time, _raw, recv_bps, send_bps                 # 결과값을 테이블로 나열
| timechart eval(round(max(send_bps),0)) as Tx eval(round(max(recv_bps),0)) as Rx   # timechart 생성

검색 결과

7. 대시보드 반영

반응형

댓글 영역