MongoDB 모니터링
이제 참고 문서를 모두 확인했으므로 종합적인 답변을 작성하겠습니다.
exemONE MongoDB 모니터링 상세 가이드
1. 지원 버전
참고 문서: MongoDB 모니터링 지원 버전
- MongoDB 4.0.0 이상 버전을 지원합니다.
참고 문서: DB Agent 지원 환경
DB Agent 지원 환경 문서에서는 MongoDB 3.0.0 이상으로 기재되어 있으나, MongoDB 모니터링 전용 가이드 문서에서는 4.0.0 이상으로 명시되어 있으므로, 안정적인 모니터링을 위해 4.0.0 이상 버전 사용을 권장합니다.
참고: Cloud 환경 모니터링 지원 표에 MongoDB는 별도로 포함되어 있지 않으므로, Cloud 환경에서의 MongoDB 모니터링 지원 여부는 별도 확인이 필요합니다.
2. 필수 권한
참고 문서: MongoDB 모니터링 권한
기본 모니터링 권한
- clusterAdmin 권한이 필요합니다.
MongoDB에서 모니터링 계정에 clusterAdmin 역할을 부여하는 예시:
use admin
db.createUser({
user: "exemone",
pwd: "password",
roles: [
{ role: "clusterAdmin", db: "admin" }
]
})
clusterAdmin 역할은 다음과 같은 주요 기능을 포함합니다:
- 클러스터 상태 조회
- Replica Set 및 Shard Cluster 관리 및 모니터링
- 서버 통계 조회 (
serverStatus,currentOp등) - Active Session 조회 및 Kill Session 실행
3. 사전 설정
참고 문서: MongoDB 모니터링 사전 설정
Slow Query 수집 설정
지원 버전: exemone-db-agent v3.0.508.37 이상
Slow Query 수집을 위해 다음 두 가지 설정이 필요합니다:
Step 1) MongoDB 프로파일링 활성화
MongoDB에서 프로파일링을 활성화해야 합니다.
// 프로파일링 레벨 설정 (level 1: slow query만 기록)
db.setProfilingLevel(1)
// 또는 특정 threshold 값과 함께 설정
db.setProfilingLevel(1, { slowms: 100 })
| 프로파일링 레벨 | 설명 |
|---|---|
| 0 | 프로파일링 비활성화 |
| 1 | slowms 기준을 초과하는 쿼리만 기록 |
| 2 | 모든 쿼리 기록 |
Step 2) Slow Query 기준시간(slowms) 설정
MongoDB의 slow query 기준시간(slowms)을 상황에 맞게 설정합니다.
// slowms 값 변경 (단위: 밀리초)
db.setProfilingLevel(1, { slowms: 200 })
4. 모니터링 옵션
참고 문서: MongoDB 모니터링 옵션
Setting > Database > Custom Configuration
mongodb.slow_query_limit
Slow Query 수집 limit 설정 값입니다.
필요 모듈 버전:
| 모듈 | 버전 |
|---|---|
| exemone-db-agent | v3.0.508.37 |
| exemone-cloud-agent | v3.0.508.1 |
| exemone-receiver | v3.0.508.10 |
| exemone-ingester | v3.0.508.24 |
| exemone-alerter | v3.0.508.38 |
| exemone-core | v3.0.508.34 |
| exemone-api | v3.0.508.87 |
| exemone-gateway | v3.0.508.3 |
| exemone-front | v3.0.508.69 |
설정 경로: Setting > Database > 인스턴스 편집 > Custom Configuration에서 mongodb.slow_query_limit 값을 설정합니다.
5. 주요 모니터링 항목 (Instance Detail Slide)
MongoDB 인스턴스 선택 시 아래 탭별 모니터링이 가능합니다:
(1) Information

| 항목 | 내용 |
|---|---|
| Agent | Instance Name, Status, Instance Group Name, DB Engine, DB Version, Last Boot Time, Uptime |
| Machine | Host Name, Host IP, OS, Kernel Version |
(2) Cluster Map

Sharded Cluster 상태를 확인하는 화면입니다.
| 기능 | 설명 |
|---|---|
| Search | Sharded Cluster 목록을 검색 (대소문자 구분 없음) |
| Get | Shared Cluster 데이터를 가져옴 |
| Cluster Map List | Cluster Map List를 Grid 형태로 표시 |
(3) Metric

MongoDB 인스턴스의 성능 지표를 모니터링합니다. Default로 최근 5분 데이터를 표시하며, Sharded Cluster Stat 지표를 제공합니다.
(4) Active Session

실행 중인 Active Session 목록을 실시간으로 확인합니다.
| 기능 | 설명 |
|---|---|
| Search | Active Session 목록 검색 (대소문자 구분 없음) |
| Multi Kill | Grid에서 행을 체크한 후 활성화되며, 실행 중인 Session을 종료 |
| Get | Active Session List 데이터를 가져옴 |
(5) Alert

알람 규칙 목록과 최근 발생 Alert 상태를 확인합니다.
| 기능 | 설명 |
|---|---|
| Search | Rule Name 검색 |
| Show only Triggered Alert | 현재 발생 중인 알람만 필터링 |
| View | List View / Bar View 형태 선택 |
(6) Host Process List

DB 서버의 프로세스 목록을 실시간 모니터링합니다.
| 수집 항목 | 설명 |
|---|---|
| PID | 프로세스 ID |
| PPID | 부모 프로세스 ID |
| Process Name | 프로세스 이름 |
| Args | 프로세스 커멘드 라인 |
| User Name | 사용자 이름 |
| Start Time | 프로세스 시작 시간 |
| CPU (%) | CPU 사용률 |
| Virtual Memory | 가상 메모리 |
| Real Memory | 물리 메모리 |
6. 추가 주의사항
- Slow Query 수집을 위해서는 exemone-db-agent v3.0.508.37 이상 버전이 필요하며, 관련 모듈(receiver, ingester, alerter, core, api, gateway, front)도 모두 명시된 버전 이상으로 업데이트해야 합니다.
- MongoDB 프로파일링은 성능에 영향을 줄 수 있으므로, 프로파일링 레벨을 1(slow query만 기록)로 설정하는 것을 권장합니다. 레벨 2(모든 쿼리 기록)는 운영 환경에서 성능 부하를 유발할 수 있습니다.
- clusterAdmin 권한은 클러스터 관리 권한을 포함하므로, 보안 정책에 따라 최소 권한 원칙을 적용할 필요가 있다면 별도 확인이 필요합니다.
- Sharded Cluster 환경에서는 Instance Detail Slide의 Cluster Map 탭을 통해 클러스터 구성을 시각적으로 확인할 수 있습니다.
- mongodb.slow_query_limit 옵션을 통해 수집되는 Slow Query의 수를 제한할 수 있으므로, 환경에 맞게 적절한 limit 값을 설정하세요.