Opserver는 Stack Overflow의 본거지 인 Stack Exchange 팀의 모니터링 시스템
기능 è 모니터링 도구
대상 è Winodws 서버(CPU, Memory, Disk, Process) / SQL / Exception 등등
배포 è IIS를 통해 배포
특징
- 웹 대시보드를 중심으로 구성
- 특정 시스템에 특화된 웹 화면 (선택적 구성 가능)
- JSON 형태의 설정 파일
- 초기 시작은 예외로그 Viewer에서 시작
- SQL 포함한 여러 시스템을 중앙관제 할 수 있는 시스템으로 발전(플러그인과 같은 방식으로 모니터링 시스템을 추가 할 수 있음)
è 내부 구조가 디자인 패턴화 되어 있을 듯
보안 설정 (Config 설정 example)
/Config/SecuritySettings.config
- Active Directory 인증 시 Web.Config에서 ViewGroups 및 AdminGroups를 편집
- 모니터 단위에 ViewGroups 및 AdminGroups을 편집
- "AdminGroups" : "GroupName",
또는 "ViewGRoups" :
"GroupName",
설정
다른 툴과 연동
- Bosun
- Orion
- Jira
- PagerDuty
개발환경
- ASP.NET MVC4
초기 설정 확인 (json 형태의 설정파일들)
http://www.dannysorensen.com/2013/11/using-stack-exchanges-opserver-step-1-will-it-build/
http://www.dannysorensen.com/2013/11/using-stack-exchanges-opserver-step-2-sql-configuration/
http://www.patrickhyatt.com/2013/10/25/setting-up-stackexchanges-opserver.html
Exception 모니터링
- https://nickcraver.com/StackExchange.Exceptional/
간단하게 조사한 내용에서는 구조에 대해서 아래의 그림을 구했다
출처 : https://imgur.com/a/dawwf
Poller는 주기적으로 데이터 수집을 하는 Engine이 있다
Opserver.Core는 Dashboard Class와 Provider Class들이 나누어져 있다 좀 더 분석해봐야 알겠지만 Provider라는 것을 알아보면 공급자 또는 하나의 Service 또는 Factory와 같이 뭔가 만들기만 하는 부분이 있고 만들어진 것을 가져다 쓰는 부분이 있는 것 같다
실제 소스코드까지 분석해본 내용은 나중에 추가한다.
어쨌든 이 그림들과 간략히 폴더 구성들만 봤을때 Provider라는 Base Class 역할을 하는 녀석이 있고 그 Provider를 토대로 각각의 Dashboard를 만들고 Dashboard에서는 Poller가 동작하면서 내부 쓰레드... (UI와 별개인 work thread??) 인 녀석을 통해 data 를 수집할 수 있는 구조로 만든 것 같다
하나의 Dashboard를 SQL 모니터링 or Exception 모니터링 같은 것이라고 하면 그 내부에는 Poll Engine이 있고 대상을 Configuration 파일에 등록하면 필요한 data를 수집하고 알람도 보낼 수 있고(Mail : StackExchange.Exceptional) 지정한 Data Store에 저장할 수 있다
모니터링 도구로서 UI 화면을 제공하고 Collector 서버가 있고 그 data를 저장하는 DB가 있다고 생각하면 쉬울 것 같다
- 웹 UI 지원
- 내부 Poll Engine (Collector Server)
- Alarm 발송 기능
- DB 저장 기능
NMS(모니터링 시스템)의 각각의 기능을 정리하면 전체적인 구조는 그려진다
User (Web UI) <-> Manager Server (Dashboard) <-> Collector Server (Poller)
↑↓ ↓
DB(Data Store)
- 장애관리
-- CPU/MEM/DISK 임계치 / Exception / SQL Error
- 성능관리
-- WMI를 통한 성능 data 수집
- 운영관리
-- Dashboard를 통한 관리
- 자산관리
-- 모니터링 대상을 설정
- Service/Application 관리
-- 프로세스 모니터링
-- Windows 서비스 모니터링
좀 더 디테일한 분석은 나중에 추가하며 Source를 추가할 수도 있으므로 회사 안에서 하긴 힘들 것 같다.....