Post on 17-Feb-2018
작성 일시_작성 부서_작성자 명
N-Watch Architecture - 오픈소스 Zabbix를 활용한 대용량 시스템 모니터링 솔루션
2015. 7. 10
IT서비스혁신센터 SW기술연구소 전우성
I. N-Watch시스템 개요
1. N-Watch구성
2. 아키텍처
II. N-Watch아키텍처 설계
1. 요구사항 분석
2. 문제 해결방안
3. 프록시 구성
4. H/A지원
5. NoSQL적용
6. TCP Reverse
III. 적용효과
목차
I. N-Watch시스템 개요
2
N-Watch는 Backend, Database, Front-End의 구조로 구성되어 있으며 Backend를 통하여 다양한 데이터가 수집되고, Front-end모듈을 통하여 사용자에게 보여주게 됩니다.
1. N-Watch구성
3
N-Watch의 기반이 되는 Zabbix는 Client의 성능정보를 Server에서 받아서 운영자가 대시보드나, 알람을 통해서 서버정보를 확인할 수 있도록 해 주는 구조를 가지고 있습니다.
2. 아키텍처
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
Database
Inventory
SLA
Configured Information
Gathered Data
User App1
User App2
Ext-SVR
Linux
4
Agent를 통하여 성능정보를 수집합니다. 또한 디스커버리 기능을 제공하여 신규 추가된 장비에 대한 자동 추가 기능을 제공하고 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server
Staff Manager
Users
Operator
I. N-Watch시스템 개요
Database
Inventory
SLA
Configured Information
Gathered Data
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
User App1
User App2
Ext-SVR
Linux
N-Watch Client
주기적인
IP, Port 검색
N-Watch
. . . 네트워크 장비 etc.
2. 아키텍처
5
모니터링 범위는 하드웨어부터 네트워크, 미들웨어, 어플리케이션까지 모니터링 접점이 존재하는 모든 항목에 대하여 모니터링이 가능합니다.
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
User App1
User App2
Ext-SVR
Linux
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
Database
Inventory
SLA
Configured Information
Gathered Data
• 운영자가 원하는 모든 어플리케이션 Applications
Middleware
Network
Hardware
2. 아키텍처
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
6
SMS Jabber
Script Email
Media Type
Permission
User Management
Database
Inventory
SLA
Configured Information
Gathered Data
템플릿 기능은 모니터링 항목을 그룹화 하여 모니터링 대상을 쉽게 추가할 수 있는 기능을 제공합니다.
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
User App1
User App2
Ext-SVR
Linux
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
Action
Condition
Operation
Trigger
Template
2. 아키텍처
Action
Condition
Operation
Trigger
Template
7
장애발생 시 장애정보는 SMS, EMail, Ticketing 시스템 등 다양한 미디어를 통하여 관리자들에게 전송할 수 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
N-Watch Server N-Watch Client
I. N-Watch시스템 개요
Database
Inventory
SLA
Configured Information
Gathered Data
User App1
User App2
Ext-SVR
Linux
15분 30분
1시간
즉시 WiFi AP
장애
발생
E-mail Monitoring PC
SMS
ticket
E-mail SMS
서버 운영자
Manager(관리자)
Help Desk
2. 아키텍처
SMS Jabber
Script Email
Media Type
Permission
User Management
Staff Manager
Operator
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
Alert
SMS/Email
First RCV
8
Users
Staff Manager
Operator
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
Alert
SMS/Email
First RCV
SMS Jabber
Script Email
Media Type
Permission
User Management
수집되는 데이터는 데이터 베이스에 저장이 됩니다. 데이터베이스의 데이터는 JSON-RPC방식의 API를 통하여 저장하거나 조회할 수 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
Action
Condition
Operation
Trigger
Template
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
N-Watch Server N-Watch Client
Users
I. N-Watch시스템 개요
User App1
User App2
Ext-SVR
Linux
2. 아키텍처
Database
Inventory
SLA
Configured Information
Gathered Data
9
대시보드에서는 시스템의 장애상황을 신속하게 확인할 수 있으며, 네트워크 맵, 그래프 스크린 등 관리에 유용한 기능들을 제공하고 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
User App1
User App2
Ext-SVR
Linux
2. 아키텍처
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
10
대시보드에서는 시스템의 장애상황을 신속하게 확인할 수 있으며, 네트워크 맵, 그래프 스크린 등 관리에 유용한 기능들을 제공하고 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
User App1
User App2
Ext-SVR
Linux
2. 아키텍처
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
11
대시보드에서는 시스템의 장애상황을 신속하게 확인할 수 있으며, 네트워크 맵, 그래프 스크린 등 관리에 유용한 기능들을 제공하고 있습니다.
Memory Network User App Trapper Webpage
CPU Memory JVM LogMonitoring External Check
Items
Templates
SMS Jabber
Script Email
Media Type
Permission
User Management
Action
Condition
Operation
Trigger
Template
User App
Webserver
WAS
Solaris
User App
OracleDB
AIX
User App
Webserver
WAS
Windows
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Alert
SMS/Email
First RCV
Dashboard
Map
Screen
N-Watch Server N-Watch Client
Staff Manager
Users
Operator
I. N-Watch시스템 개요
User App1
User App2
Ext-SVR
Linux
2. 아키텍처
Dash Board
Map Graph/Tables Report Screens
Webserver / Application Engine
12
II. N-Watch아키텍처 설계
12
대용량 관제가 요구되는 현장 운영자들에게 기존에 모니터링 솔루션 운영 시, 문제점이나 요구사항을 수렴한 결과 다음과 같은 비기능적 요구사항이 있었습니다.
1. 현장 요구사항 분석
한 대의 서버에서 모니터링 장비 수 제한 단일 모니터링 서버 대 모니터링
대상 서버의 수량 제한 1
네트워크 분할에 의한 네트워크 별 서버 존재 네트워크가 다를 경우 방화벽
설정의 어려움 2
대용량 데이터 처리 능력 한계 장기간의 데이터 집계 시 집계 시간 증대 3
단일 서버 구성으로 장애 대처 불가 모니터링 서버의 장애 시 모니터링 대상 서버의
장애 판단 불가 4
비 신뢰 전송으로 데이터 유실 발생 일시적인 장애 시 데이터의 유실 5
※ 현장 운영자 인터뷰 결과
PUSH방식의 수집기능 제공 Polling방식의 Agent설치 시 방화벽 설정 부담 6
13
II. N-Watch아키텍처 설계
문제점에 대한 해결방안으로는 프록시 구성, NoSQL적용, HA지원, TCP Reverse 등이 도출되었습니다.
2. 문제 해결방안
문제점
단일 모니터링 서버 대 모니터링 대상 서버의 수량 제한
네트워크가 다를 경우 방화벽 설정의 어려움
대용량 데이터 처리 능력 한계
단일 서버 구성으로 장애 대처 불가
장애발생 시 데이터 유실 발생
프록시를 통한 모니터링 서버 구성으로 서버의 처리량 확보
프록시 구성
비 관계형 데이터베이스인 NoSQL 적용 시 데이터베이스에 대한 성능 향상 제공
NoSQL적용
H/A지원을 통한 장애시 대체 서버 구성
H/A지원
PUSH방식의 수집기 TCP의 방향 전환을 통한 방화벽 허용
TCP Reverse
14
II. N-Watch아키텍처 설계
14
프록시를 구성할 경우 서버의 부하를 분산하고, 네트워크간 복잡도를 해소하고, 프록시를 통하여 캐쉬를 가능하게 하여 운영의 효율성을 크게 높일 수 있습니다.
3. 프록시 구성
• 서버의 수량이 많을 경우
- 모니터링 서버가 수용할 수 있는 범위만큼
서버를 분산하여 관리
• 네트워크가 다를 경우
- 네트워크 별 서버를 설치하여 모니터링을 수행
AS-WAS
• 프록시를 통하여 모니터링 수행
- 모니터링 대상 서버들은 프록시 서버에
성능정보를 전달
- 서버 장애 발생 시 프록시의 캐시를 통하여
신뢰 전송 보장
- 프록시에서 취합된 정보를 서버로 전달
- 운영자는 단일 서버에 접속하여 모니터링
대상서버 모니터링
Zabbix Proxy
15
II. N-Watch아키텍처 설계
15
프록시를 구성할 경우 서버의 부하를 분산하고, 네트워크간 복잡도를 해소하고, 프록시를 통하여 캐쉬를 가능하게 하여 운영의 효율성을 크게 높일 수 있습니다.
4. H/A지원
• 프록시를 통하여 모니터링 수행
- 모니터링 대상 서버들은 프록시 서버에
성능정보를 전달
- 서버 장애 발생 시 프록시의 캐시를 통하여
신뢰 전송 보장
- 프록시에서 취합된 정보를 서버로 전달
- 운영자는 단일 서버에 접속하여 모니터링
대상서버 모니터링
Zabbix Proxy
• 프록시 이중화를 통한 장애 예방
- Zabbix 기본 구조인 단일 프록시 구성 시
프록시 서버에 장애가 발생할 경우 특정
네트워크 존에 대한 관제 부재
- 프록시 서버 및 N-Watch서버에 대하여
Active-Standby구조로 구성하여 Active 서버
장애 발생 시 Standby 서버가 active가
되도록
H/A Adopted
HA 구성
16
II. N-Watch아키텍처 설계
NodeManager는 Active서버의 상태를 체크하고, 서버에 장애가 발생하였을 경우 Stand-by를 Active로 전환하여 장애를 복구하는 기능을 제공합니다.
4. H/A지원
Node Manager
WAS
수집서버
WEB WEB
agent
Node Manager
Database
Active Stand-by
Alive check Alive check
Node Manager
WAS
수집서버
WAS
수집서버
WEB WEB
agent
Node Manager
Database
Stand-by Active
Alive check Alive check
WAS
수집서버
17
II. N-Watch아키텍처 설계
NodeManager는 Active서버의 상태를 체크하고, 서버에 장애가 발생하였을 경우 Stand-by를 Active로 전환하여 장애를 복구하는 기능을 제공합니다.
4. H/A지원
Node Manager
WAS
수집서버
WEB WEB
agent
Node Manager
Database
Active Stand-by
Alive check Alive check
Node Manager
WAS
수집서버
WAS
수집서버
WEB WEB
agent
Node Manager
Database
Stand-by Active
Alive check Alive check
WAS
수집서버
NodeManager
+isActive
+registerObserver()+removeObserver()+notifyObserver()+healthCheck()
PipeObserver
+recvSocketChannel+sendSocketChannel
+update()
DaemonObserver
+update()
18
II. N-Watch아키텍처 설계
18
백엔드 데이터베이스를 NoSQL(MongoDB) 를 활용할 경우 Replication을 통한 fault tolerant가 가능해지고, 분산저장을 통하여 조회, 저장간의 성능을 확보할 수 있습니다.
5. NoSQL적용
Shard1
Replica Set
Shard2
Replica Set
Shard2
Replica Set
Server
Mongos • 대용량 수집을 위한 분산 저장 지원
• Replication을 통한 fault tolerant 실현
가용성, 처리량 확보
19
II. N-Watch아키텍처 설계
19
MongoDB의 Map-Reduce를 활용하면 분산된 서버에서 데이터를 추출, 집계하여 운영자가 원하는 데이터를 신속하게 조회할 수 있습니다.
5. NoSQL적용
MAP CHUNK1
MAP CHUNK2
MAP CHUNK3
REDUCE PART2
REDUCE PART1
① MAP을 통하여 청크에서 집계할 범위의 데이터 추출
② 추출된 데이터에 대하여 Reduce를 통하여 일, 주, 월단위 집계
20
II. N-Watch아키텍처 설계
20
DB분석결과 성능정보가 저장되는 테이블인 history테이블과, history_str테이블은 별도의 Relation이 존재하지 않은 것으로 확인되었습니다.
5. NoSQL적용
21
II. N-Watch아키텍처 설계
21
소스 분석결과 history테이블과, history_str테이블은 조회 쿼리 수행 시 다른 테이블과의 조인이 없는 것으로 확인되었습니다.
5. NoSQL적용
CGraphDraw
+applyGraphTheme()+setPeriod()+setSTime()+setFrom()+drawRectangle()
CLineGraphDraw
+draw()
CPieGraphDraw
+draw()
DB
+DBstart()+DBclose()+DBend()+DBselect()+DBexecute()
CGraphDraw
+applyGraphTheme()+setPeriod()+setSTime()+setFrom()+drawRectangle()
CLineGraphDraw
+draw()
CPieGraphDraw
+draw()
DB
+DBstart()+DBclose()+DBend()+DBselect()+DBexecute()
MongoDB
+execute()+drop()+lastError()+command()
HistoryDAO
+aggredatedHistory()+insertHistory()
AS-WAS AS-IS
22
II. N-Watch아키텍처 설계
Zabbix는 데이터를 수집 시 polling 방식으로 데이터를 수집하여 방화벽 정책 설정에 어려움이 있었습니다.
6. TCP Reverse
Server
agent01:10050
agent01 agent02 agent03 agent04 agent05 agent99
23
II. N-Watch아키텍처 설계
NodeManager는 Active서버의 상태를 체크하고, 서버에 장애가 발생하였을 경우 Stand-by를 Active로 전환하여 장애를 복구하는 기능을 제공합니다.
agent01
Server
agent01
Server
Server
agent01
6. TCP Reverse
24
III. 적용효과
24
1. 적용효과
오류허용성
NoSQL적용은 시스템의 다운 상황을 예방하여 높은 성능 수준을 달성할 수 있도록 해 줍니다.
실행 효율성
프록시는 모니터링 서버와 관제 대상 서버간의 처리효율과 처리 시간을 향상시켜줍니다.
자원 효율성
NoSQL의 Map Reduce는 조회 시 가용 자원의 이용 효율을 높여줍니다.
운영성
프록시를 활용한 단일서버 구축은 운영자의 감시 포인트를 감소시켜 솔루선의 운영성을 증대합니다.
회복성
H/A구성은 서버의 장애 상황에서 서비스가 회복되도록 해 줍니다.
개선된 아키텍처를 통해 N-Watch의 실행효율성, 자원효율성, 운영성, 오류허용성, 회복성을 향상할 수 있었습니다.
25