MongoDB 로그 수집 / 분석
MongoDB 모니터링 전략
- 데이터베이스 활동을 실시간 리포팅하는 유틸리티 활용
(MongoDB 다운로드 패키지에 포함된 유틸리티) - 데이터베이스 명령 활용
(현재 데이터베이스의 상태에 대한 통계 확인 가능) - MMS 모니터링 서비스 활용
MMS : MongoDB Management Service
데이터에 대한 시각화 및 경고 등을 제공하는 무료 서비스
MongoStat
- MongoDB가 동작하는 내부 상황에 대한 정보를 확인하기 위한 툴
- 1초에 한번씩 mongod, mongos의 성능을 측정
- MongoDB 내에서 일어나는 다양한 이벤트 ( insert, find, update, delete )에 대한 정보와
메모리 상태 ( mapped, vsixe, res, faults, locked )등의 정보 확인 가능 - MongoStat 사용방법 : cmd에서 "mongostat" 이라고 입력
- rowcount를 통해 출력될 데이터 row 수를 지정 가능
( 만약 이 값을 지정하지 않는다면 계속해서 관련 정보를 출력 )
ex ) mongostat -rowcount 50
* 이벤트
레이블 | 의미 |
inserts | 초당 insert 수 |
query | 초당 query 수 |
update | 초당 update 수 |
delete | 초당 delete 수 |
getmore | 초당 발생 작업 수 |
command | Slave를 포함하여 초당 실행되는 명령어 수 |
flushe | 초당 fsync flush 되는 수 |
* 메모리 상태
레이블 | 의미 |
mapped | 메모리상 매핑되는 메모리 크기 단위 (MB) |
vsize | 프로세스 가상 크기 (MB) |
res | 프로세스의 resident 크기 (MB) |
*faults | 초당 발생하는 페이지 폴트 수 |
*locked | 글로벌 Write 락이 발생하는 전체 시간에 대한 비율 (단위 퍼센트) |
ldx miss | Btree index를 로드하며 인덱스를 읽을 때 페이지 폴트가 나는 비율 (단위 퍼센트) |
*qr | 몽고디비 인스턴스로부터 Data 읽기를 기다리기 위한 client의 queue 길이 |
qw | 몽고디비 인스턴스로부터 Data 쓰기를 기다리는 client의 queue 길이 |
ar | 읽기 작업을 수행중인 Active 클라이언트 수 |
aw | 쓰기 작업을 진행중인 Active 클라이언트 수 |
netln | 몽고디비로 receivec된 네트워크 트래픽 양 |
netOut | 몽고디비에서 밖으로 sent된 네트워크 트래픽 양 |
conn | 접속된 connection 수 |
set | Replica 이름 |
repl | 리플리케이션 유형 M : Master SEC : Secondary REC : Recovering UNK : Unknown SLV : Slave |
MongoTop
- mongotop은 컬렉션 단위의 응답 속도 확인이 가능
- db.serverStatus()나 mongostat에 나오는 요청 건 수와 같이 계산하거나,
참고 지표정도로 확인 - mongostat에서 중요한 지표는 page fault, qr, locked 등
- 갑자기 page fault가 증가하고 서비스가 지연된다면,
full scan 쿼리를 날렸을 가능성이 높음 - 쓰기 요청이 많아질 경우 qr 수치가 높아지고 그만큼 읽기 대기 중인 상태가 많아지므로
체감상 서비스가 지연된다고 느낄 수 있음 - mongotop은 리눅스에서 시스템 상황을 실시간(설정에 따라) 확인할 수 있는 top와 유사
- mongostat과 다른점은 몽고디비 인스턴스 내 모든 컬렉션에 대한 read/write를 확인 가능
- mongotop 명령어 뒤에 붙은 숫자는 5초마다 데이터를 refresh 하라는 명령
- mongostat처럼 몇 가지 데이터 컬럼이 존재하는데 stat처럼 복잡하지 않아 한눈에 보기 쉬움
- ex ) mongotop 5
레이블 | 의미 |
Ns | 데이터베이스명 + 컬렉션명 |
Db | 데이터베이스명 (v2.2 이상에서 -locks옵션을 사용한다면 출력되지 않음) |
Total | mongod 프로세스가 해당 컬렉션에서 수행한 총 작업 시간 |
Read | mongod 프로세스가 해당 컬렉션에서 읽기 작업을 수행한 총 시간 |
Write | mongod 프로세스가 해당 컬렉션에서 쓰기 작업을 수행한 총 시간 |
시간 | 분석 결과를 반환한 시간 |
웹 모니터링 도구
- 앞선 도구들은 데이터베이스라면 대부분 지원하는 기본적인 명령
- MongoDB는 웹상에서 MongoDB의 상황을 모니터링할 수 있는 환경 제공
- NoSQL 솔루션의 특성상 한 대 이상의 서버에서 사용할 수도 있기에 접근성이 높은 웹 모니터링 환경을 기본적으로 제공
- 웹 모니터링 기능을 활성화하고 싶다면 mongodb 데몬을 실행할 때 -rest 옵션을 주면 됨
- ex ) mongod -dbpath c:\mongodb\var --rest
Log 수집
- 실시간으로 MongoDB의 상태를 확인하는 것도 중요하지만
모든 서버를 실시간으로 체크한다는 것은 불가능함 - 로그 데이터나 상태 정보가 필요한 경우 장애가 발생했을 경우 이거나
아니면 정기적인 점검 과정에서 필요 - 따라서 MongoDB에서 일어나는 상황을 파일로 저장할 필요가 있음
- logpath 옵션을 몽고디비 실행 시 사용한다면 몽고디비의 로그를 저장 가능한 상태가 됨
- 꽤 많은 정보를 저장하기 때문에 log 파일명을 일정 시간 단위로 바꿔줄 필요가 있음
- ex ) mongod --path c:\mongodb\var -logpath c:\mongodb\testlog.txt
MongoDB 로그 수집 / 분석 방법
mongostat - mongod, mongos 성능 측정
- mongostat 30 / 30초 주기 측정
- mongostat -rowcount 20 1 / 1초 주기 체크, 20개의 row를 20번 출력 후 종료
- mongostat -n 20 1 / 1초 주기 체크, 20개의 row를 20번 출력 후 종료
mongotop - Read/Write/Total I/O 정보 조회
- mongotop 30
- mongotop --locks / 데이터베이스의 lock 상황 조회 / 옵션 --locks는 MongoDB 2.x에만 유용
'DataBase > MongoDB' 카테고리의 다른 글
MongoDB 관리 툴 둘러보기 (0) | 2021.10.21 |
---|---|
MongoDB 개발 팁 살펴보기 ( 튜닝 / 보안 ) (0) | 2021.10.21 |
MongoDB 운영 방법 배우기 ( 백업/복구 ) (0) | 2021.10.19 |
MongoDB 집계 기능 알아보기 (0) | 2021.10.19 |
MapReduce 구현하기 (0) | 2021.10.18 |