Copyright© 2015 DASAN Network Solutions, Inc.
http://www.dasannetworks.com Copyright© 2015 DASAN Network Solutions, Inc.
시스템 모니터링/진단 기능 강화 안
- OPPY 시스템 제안 -
2018-03-05
Copyright© 2015 DASAN Network Solutions, Inc.Copyright© 2015 DASAN Network Solutions, Inc.
목차
• 배경 (1,2,3)
• 제안
• OPPY란 (1,2)
• OPPY 모듈 (1,2)
• OPPY CLI
• OPPY 운용 예시 (1,2)
• 부록
✓ (내부열람) 세부구현 및 현재작업상황
Copyright© 2015 DASAN Network Solutions, Inc.
배경(1/3) - 모니터링 & 진단
❖ 모니터링(Monitoring)이란
• 대상(Target)의 상태 변화와 데이터 흐름의 지속적인 감시의 과정
• Target : 서비스 상태, 리소스 사용량, s/w 및 h/w 컴포넌트들의 변화 外
• 문제 상황의 포착 및 진단이나 성능 평가/개선을 위해 사용
• 리포팅 기능 포함
❖ 진단(Diagnostic)이란
• 특정 대상의 상황을 정밀하게 확인하거나, 문제점을 해결하기 위해 일련의 정보를 수집하는 행위
• 또는 위의 정보 수집을 위하여 구현된 기능
Copyright© 2015 DASAN Network Solutions, Inc.
배경(2/3) – 일의 어려움
➢ 네트워크 장비들의 기능/구조의 복잡도 증가
✓ 결과 취득의 어려움
✓ 복잡성 증가
✓ 적용의 어려움
✓ 예측의 어려움
✓ 결과 취득의 어려움
➢ 지속적으로 새로운 제품/기능들이 추가, 확장
➢ 예외적인 상황에서의 개개의 특정 상황을 미리
예비하기 어려움
➢ 제조사 엔지니어의 접근이 제한
➢ 간헐적인 문제 발생 상황에서의 진단 기회 포
착 어려움
Copyright© 2015 DASAN Network Solutions, Inc.
배경(3/3) - 요구사항
✓ 복잡성 증가
✓ 적용의 어려움
✓ 예측의 어려움
✓ 결과 취득의 어려움
“ 쉽게 구현되어”
“ 쉽게 적용되고”
“ 쉽게 결과 얻는”
Copyright© 2015 DASAN Network Solutions, Inc.
제안 – OPPY
❖What does ‘OPPY’ means ?
- ‘Observe’, ‘Plug and Play’, ‘Yelled a situation’
✓ Observe
✓ Plug and Play
(or Play the Program)
✓ Yelled a situation
• 장비 운용 중에 발생되는
여러 이벤트 감지 가능
• 다양한 시스템 리소스의
변화 량을 모니터링
• 개별적인 모니터링/진단
기능들은 모두 외부 모듈
로 구현 및 적용
• 장비 운용 중에 새로운
기능을 쉽게 탑재/적용
• 모니터링/진단 결과를 다양한 방
식으로 리포트
- Syslog를 통한 alarm 제공
- 진단 결과의 파일 저장 및 핸들링
(예: 파일압축, 외부 전송)
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY 란(1/2)
❖ 모니터링/진단 플랫폼(Platform)이다.
• 개별적인 모니터링/진단 기능의 구현체가 아님
• 모든 구체적인 모니터링/진단 기능은 외부의 모듈 형태로 제공
• 모듈에 명시된 기능들을 실행 시키고, 이들 실행에 필요한 여러 API를 제공
❖ 시스템에 종속되지 않은 독립적인 실행 플랫폼
• 모듈들과 API들은 NOS의 릴리즈와 별도로 확장 및 탑재가 가능
• 이를 위해 ZebOS나 커널 등에 tightly coupled되지 않은 별도의 독립된 형태로 제공
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY 란(2/2)
❖ 플랫폼(Platform)으로서의 구성
• 어플리케이션과 라이브러리 set의 조합이다.
• 모듈 실행의 주체인 Daemon(‘oppy’)
• Daemon과의 사용자 인터페이스 역할의 Shell (‘oppsh’)
• 데몬 내부에 스크립트 엔진 탑재
- 설정파일/외부 명령어를 받아들여 반영
- 외부 모듈파일의 명령문을 해석/실행
• API 인터페이스
- 기본적인 처리 기능을 API 형태로 모듈에 제공
- 내장된 기본 API와 함께 외부 라이브러리 연동 제공
✓ Application
✓ Library
✓ OPPY
• OS에서 제공되는 여러 시스템 콜(POSIX API)
- Ex) signal 처리, file 처리
• 당사 제품 내부의 dependency 정보처리 API
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY 모듈 (1/2)
module = {
target = “/proc/meminfo”,
items = { ‘high_mem’, ‘low_mem’},
conds = { ‘high_mem_cond’ = 80 ,
‘low_mem_cond’ = 60 },
action = { check_high_mem, check_low_mem },
report_type = {‘syslog’ = true },
help = “This function is blabla..”,
.. Skip ..
}
.. Skip ..
function check_high_mem( )
{
if ( oberv_high_mem >= conds[‘high_mem_cond’])
then
if (report_type[‘syslog’] == true ) then
syslog(LOG_INFO, “high mem is ..blabla..”)
.… skip .…
end
… skip ..
end
}
.. Skip ..
Ex) “default_memory_check.oppy” file
❖OPPY 모듈 파일
• 텍스트 형태의 명세서
– 무엇을 대상으로,
– 어떻게 모니터링/진단을 수행하며
– 어떻게 알려줄 것인가
• 플래시 메모리의 설정영역에 저장/실행가능
– 장비 운용 중에 기능의 추가와 확장이 가능
✓ 예) 장비 운용 중에 새로운 설정 파일 추가와 유사
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY 모듈(2/2)
OPPY
Default
Memory
Checker
……….
……….
……….
외부 라이브러리
OPPY 데몬 실행
메모리 체크 모니터링에 명세서
(모듈)
모듈 로딩
모듈 실행
- 명세서 해석
- 명세서 실행
API 호출/제공
외부 API 인터페이스
“default_check_mem.oppy” 파일
모니터링 수행
리포팅
- syslog
- or 결과 파일 생성
모니터링 결과
Memory
Resource
NOS의 커널 영역
❖ OPPY에서 모듈이 사용되는 기본 과정
• Ex) ‘메모리 모니터링’ 모듈의 구동 예.
“별도의 프로세스”로 수행됨
①
②
③
④
⑤
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY CLI - 예시
❖ 장비의 설정확인 명령에서는 ‘enable’유무만 확인
- 상세 설정 확인은 별도 명령어를 이용
- ZebOS 등의 기존 관리 App들과의 연동을 최소화, 기능의 추가/확장을 유연하게 가져감
SWITCH(config)# oppy-monitor shell COMMANDS
oppsh(Shell)을 이용하여 상태 조회나 명령어 실행
1회성 명령어 실행
SWITCH(config)# oppy-monitor run MODULE_FILE _NAME
모듈 파일을 실행시킨다.
SWITCH(config)# oppy-monitor (enable|disable)
OPPY 데몬을 실행시키거나 중단 시킨다
SWITCH# show running-config
… skip …
oppy-monitor enable
… skip …
설정 확인에서 OPPY 실행여부를 확인
SWITCH# show oppy-monitor status
default_mem_checker is excuting
this function is .. blabla..
targeted for high memory : XXX
targeted for low memory : YYY
Report type : syslog
현재 OPPY에서 실행중인 기능들의 상세 내용 확인 SWITCH# show oppy-monitor module
/etc/.config/default_mem_check.oppy
/etc/.config/high_mem_check.oppy
장비 내부의 OPPY용 모듈의 위치와 이름 확인
✓ 관련 CLI 명령어들의 예시
Copyright© 2015 DASAN Network Solutions, Inc.
PID … %CPU %MEM … COMAND
……… skip …………………
200 0.8 1.0 [A daemon]
201 0.9 1.2 [B daemon]
202 0.9 8.2 [C daemon]
…..… skip ………………….
OPPY 운용 예시(1/2)
❖ (시나리오 1) 메모리 모니터링 中 어플리케이션 영역의 메모리 누수 감지
OPPY
Default
Memory
Checker
/proc/meminfo
OPPY
Applicaton
Memory
Checker
Default
Memory
Checker
……….
……….
……….
NOS 내부의 전체 메모리 변화량을 모니터링
- High mem 영역: 어플리케이션 사용량
- Low mem 영역: 커널 내부 사용량
어플리케이션 영역의 메모리 사용량이
임계값 이상임을 report
어플리케이션 영역메모
리 체크모듈을 로딩
메모리 체크 모듈을
실행
어플리케이션 영역
메모리 사용량 모니터링
- 결과 리포팅
(option)
어플리케이션 영역의 문제가
확실하다면, 전체 메모리 모니
터링 기능은 off 시킬 수 있다
➢ 이것은 이해를 돕기 위해 단순화된 시나리오
➢ 실제의 수행 과정에서는 훨씬 많은 변수와 체크 조건이 소요됨
예) OPPY 자신의 메모리 사용량 고려 및 다른 실행서비스 체크
!
①
②
③
Copyright© 2015 DASAN Network Solutions, Inc.
OPPY 운용 예시(2/2)
❖ (시나리오 2) 메모리 모니터링 中 커널 영역의 메모리 누수 감지
OPPY
Default
Memory
Checker
/proc/meminfo
OPPY
Kernel
Memory
Checker
……….
……….
……….
NOS 내부의 전체 메모리 변화량을 모니터링
- High mem 영역: 어플리케이션 사용량
- Low mem 영역: 커널 내부 사용량
커널 고유 영역의 메모리 사용량이
임계값 이상임을 report
커널 영역메모리 체크 모
듈을 로딩
메모리 체크 모듈을 실행
커널 영역
메모리 사용량 모니터링
- 결과 리포팅
➢ 이것은 이해를 돕기 위해 단순화된 시나리오
➢ 실제의 수행 과정에서는 훨씬 많은 변수와 체크 조건이 소요됨
Kernel side
Memory Resource
‘slabinfo’, ‘skbinfo’, etc.
……….
……….
……….
oppsh
별도로 제공된 진단기능
모듈
OPPY 데몬 제어용
사용자 쉘
사용자가 추가적인 진단 명령어를
실행
(or 다른 모니터링 모듈 실행)
※ 커널 영역의 이슈 진단은 case by case 이므로 쉽게 일반화 할 수는 없음
!
①
②
③
④
Copyright© 2015 DASAN Network Solutions, Inc.
부록 – 기본 show 명령어
Copyright© 2015 DASAN Network Solutions, Inc.
부록 - 실행 명령어
Copyright© 2015 DASAN Network Solutions, Inc.
부록 – 실행 파일들

The log based event script (로그기반 이벤트스크립트)

  • 1.
    Copyright© 2015 DASANNetwork Solutions, Inc. http://www.dasannetworks.com Copyright© 2015 DASAN Network Solutions, Inc. 시스템 모니터링/진단 기능 강화 안 - OPPY 시스템 제안 - 2018-03-05
  • 2.
    Copyright© 2015 DASANNetwork Solutions, Inc.Copyright© 2015 DASAN Network Solutions, Inc. 목차 • 배경 (1,2,3) • 제안 • OPPY란 (1,2) • OPPY 모듈 (1,2) • OPPY CLI • OPPY 운용 예시 (1,2) • 부록 ✓ (내부열람) 세부구현 및 현재작업상황
  • 3.
    Copyright© 2015 DASANNetwork Solutions, Inc. 배경(1/3) - 모니터링 & 진단 ❖ 모니터링(Monitoring)이란 • 대상(Target)의 상태 변화와 데이터 흐름의 지속적인 감시의 과정 • Target : 서비스 상태, 리소스 사용량, s/w 및 h/w 컴포넌트들의 변화 外 • 문제 상황의 포착 및 진단이나 성능 평가/개선을 위해 사용 • 리포팅 기능 포함 ❖ 진단(Diagnostic)이란 • 특정 대상의 상황을 정밀하게 확인하거나, 문제점을 해결하기 위해 일련의 정보를 수집하는 행위 • 또는 위의 정보 수집을 위하여 구현된 기능
  • 4.
    Copyright© 2015 DASANNetwork Solutions, Inc. 배경(2/3) – 일의 어려움 ➢ 네트워크 장비들의 기능/구조의 복잡도 증가 ✓ 결과 취득의 어려움 ✓ 복잡성 증가 ✓ 적용의 어려움 ✓ 예측의 어려움 ✓ 결과 취득의 어려움 ➢ 지속적으로 새로운 제품/기능들이 추가, 확장 ➢ 예외적인 상황에서의 개개의 특정 상황을 미리 예비하기 어려움 ➢ 제조사 엔지니어의 접근이 제한 ➢ 간헐적인 문제 발생 상황에서의 진단 기회 포 착 어려움
  • 5.
    Copyright© 2015 DASANNetwork Solutions, Inc. 배경(3/3) - 요구사항 ✓ 복잡성 증가 ✓ 적용의 어려움 ✓ 예측의 어려움 ✓ 결과 취득의 어려움 “ 쉽게 구현되어” “ 쉽게 적용되고” “ 쉽게 결과 얻는”
  • 6.
    Copyright© 2015 DASANNetwork Solutions, Inc. 제안 – OPPY ❖What does ‘OPPY’ means ? - ‘Observe’, ‘Plug and Play’, ‘Yelled a situation’ ✓ Observe ✓ Plug and Play (or Play the Program) ✓ Yelled a situation • 장비 운용 중에 발생되는 여러 이벤트 감지 가능 • 다양한 시스템 리소스의 변화 량을 모니터링 • 개별적인 모니터링/진단 기능들은 모두 외부 모듈 로 구현 및 적용 • 장비 운용 중에 새로운 기능을 쉽게 탑재/적용 • 모니터링/진단 결과를 다양한 방 식으로 리포트 - Syslog를 통한 alarm 제공 - 진단 결과의 파일 저장 및 핸들링 (예: 파일압축, 외부 전송)
  • 7.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY 란(1/2) ❖ 모니터링/진단 플랫폼(Platform)이다. • 개별적인 모니터링/진단 기능의 구현체가 아님 • 모든 구체적인 모니터링/진단 기능은 외부의 모듈 형태로 제공 • 모듈에 명시된 기능들을 실행 시키고, 이들 실행에 필요한 여러 API를 제공 ❖ 시스템에 종속되지 않은 독립적인 실행 플랫폼 • 모듈들과 API들은 NOS의 릴리즈와 별도로 확장 및 탑재가 가능 • 이를 위해 ZebOS나 커널 등에 tightly coupled되지 않은 별도의 독립된 형태로 제공
  • 8.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY 란(2/2) ❖ 플랫폼(Platform)으로서의 구성 • 어플리케이션과 라이브러리 set의 조합이다. • 모듈 실행의 주체인 Daemon(‘oppy’) • Daemon과의 사용자 인터페이스 역할의 Shell (‘oppsh’) • 데몬 내부에 스크립트 엔진 탑재 - 설정파일/외부 명령어를 받아들여 반영 - 외부 모듈파일의 명령문을 해석/실행 • API 인터페이스 - 기본적인 처리 기능을 API 형태로 모듈에 제공 - 내장된 기본 API와 함께 외부 라이브러리 연동 제공 ✓ Application ✓ Library ✓ OPPY • OS에서 제공되는 여러 시스템 콜(POSIX API) - Ex) signal 처리, file 처리 • 당사 제품 내부의 dependency 정보처리 API
  • 9.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY 모듈 (1/2) module = { target = “/proc/meminfo”, items = { ‘high_mem’, ‘low_mem’}, conds = { ‘high_mem_cond’ = 80 , ‘low_mem_cond’ = 60 }, action = { check_high_mem, check_low_mem }, report_type = {‘syslog’ = true }, help = “This function is blabla..”, .. Skip .. } .. Skip .. function check_high_mem( ) { if ( oberv_high_mem >= conds[‘high_mem_cond’]) then if (report_type[‘syslog’] == true ) then syslog(LOG_INFO, “high mem is ..blabla..”) .… skip .… end … skip .. end } .. Skip .. Ex) “default_memory_check.oppy” file ❖OPPY 모듈 파일 • 텍스트 형태의 명세서 – 무엇을 대상으로, – 어떻게 모니터링/진단을 수행하며 – 어떻게 알려줄 것인가 • 플래시 메모리의 설정영역에 저장/실행가능 – 장비 운용 중에 기능의 추가와 확장이 가능 ✓ 예) 장비 운용 중에 새로운 설정 파일 추가와 유사
  • 10.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY 모듈(2/2) OPPY Default Memory Checker ………. ………. ………. 외부 라이브러리 OPPY 데몬 실행 메모리 체크 모니터링에 명세서 (모듈) 모듈 로딩 모듈 실행 - 명세서 해석 - 명세서 실행 API 호출/제공 외부 API 인터페이스 “default_check_mem.oppy” 파일 모니터링 수행 리포팅 - syslog - or 결과 파일 생성 모니터링 결과 Memory Resource NOS의 커널 영역 ❖ OPPY에서 모듈이 사용되는 기본 과정 • Ex) ‘메모리 모니터링’ 모듈의 구동 예. “별도의 프로세스”로 수행됨 ① ② ③ ④ ⑤
  • 11.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY CLI - 예시 ❖ 장비의 설정확인 명령에서는 ‘enable’유무만 확인 - 상세 설정 확인은 별도 명령어를 이용 - ZebOS 등의 기존 관리 App들과의 연동을 최소화, 기능의 추가/확장을 유연하게 가져감 SWITCH(config)# oppy-monitor shell COMMANDS oppsh(Shell)을 이용하여 상태 조회나 명령어 실행 1회성 명령어 실행 SWITCH(config)# oppy-monitor run MODULE_FILE _NAME 모듈 파일을 실행시킨다. SWITCH(config)# oppy-monitor (enable|disable) OPPY 데몬을 실행시키거나 중단 시킨다 SWITCH# show running-config … skip … oppy-monitor enable … skip … 설정 확인에서 OPPY 실행여부를 확인 SWITCH# show oppy-monitor status default_mem_checker is excuting this function is .. blabla.. targeted for high memory : XXX targeted for low memory : YYY Report type : syslog 현재 OPPY에서 실행중인 기능들의 상세 내용 확인 SWITCH# show oppy-monitor module /etc/.config/default_mem_check.oppy /etc/.config/high_mem_check.oppy 장비 내부의 OPPY용 모듈의 위치와 이름 확인 ✓ 관련 CLI 명령어들의 예시
  • 12.
    Copyright© 2015 DASANNetwork Solutions, Inc. PID … %CPU %MEM … COMAND ……… skip ………………… 200 0.8 1.0 [A daemon] 201 0.9 1.2 [B daemon] 202 0.9 8.2 [C daemon] …..… skip …………………. OPPY 운용 예시(1/2) ❖ (시나리오 1) 메모리 모니터링 中 어플리케이션 영역의 메모리 누수 감지 OPPY Default Memory Checker /proc/meminfo OPPY Applicaton Memory Checker Default Memory Checker ………. ………. ………. NOS 내부의 전체 메모리 변화량을 모니터링 - High mem 영역: 어플리케이션 사용량 - Low mem 영역: 커널 내부 사용량 어플리케이션 영역의 메모리 사용량이 임계값 이상임을 report 어플리케이션 영역메모 리 체크모듈을 로딩 메모리 체크 모듈을 실행 어플리케이션 영역 메모리 사용량 모니터링 - 결과 리포팅 (option) 어플리케이션 영역의 문제가 확실하다면, 전체 메모리 모니 터링 기능은 off 시킬 수 있다 ➢ 이것은 이해를 돕기 위해 단순화된 시나리오 ➢ 실제의 수행 과정에서는 훨씬 많은 변수와 체크 조건이 소요됨 예) OPPY 자신의 메모리 사용량 고려 및 다른 실행서비스 체크 ! ① ② ③
  • 13.
    Copyright© 2015 DASANNetwork Solutions, Inc. OPPY 운용 예시(2/2) ❖ (시나리오 2) 메모리 모니터링 中 커널 영역의 메모리 누수 감지 OPPY Default Memory Checker /proc/meminfo OPPY Kernel Memory Checker ………. ………. ………. NOS 내부의 전체 메모리 변화량을 모니터링 - High mem 영역: 어플리케이션 사용량 - Low mem 영역: 커널 내부 사용량 커널 고유 영역의 메모리 사용량이 임계값 이상임을 report 커널 영역메모리 체크 모 듈을 로딩 메모리 체크 모듈을 실행 커널 영역 메모리 사용량 모니터링 - 결과 리포팅 ➢ 이것은 이해를 돕기 위해 단순화된 시나리오 ➢ 실제의 수행 과정에서는 훨씬 많은 변수와 체크 조건이 소요됨 Kernel side Memory Resource ‘slabinfo’, ‘skbinfo’, etc. ………. ………. ………. oppsh 별도로 제공된 진단기능 모듈 OPPY 데몬 제어용 사용자 쉘 사용자가 추가적인 진단 명령어를 실행 (or 다른 모니터링 모듈 실행) ※ 커널 영역의 이슈 진단은 case by case 이므로 쉽게 일반화 할 수는 없음 ! ① ② ③ ④
  • 14.
    Copyright© 2015 DASANNetwork Solutions, Inc. 부록 – 기본 show 명령어
  • 15.
    Copyright© 2015 DASANNetwork Solutions, Inc. 부록 - 실행 명령어
  • 16.
    Copyright© 2015 DASANNetwork Solutions, Inc. 부록 – 실행 파일들