몽고 최적화 속도 / 확인 / slow query / slowquery/ 수집방법 / 프로파일러 / 최적화 / audit
mongo db profiling
profiler level
- 0 : profile 가 off, data 수집을 안한다. default 값
- 1 : 오래걸리는 operation 에 대해서만 수집, 기준은
slowms
값보다 오래걸리는 operation 을 수집.
만약 db.setProfilingLevel() filter option 이 걸려있다면,slowms
,sampleRate
값은 무시하고 filter 에 맞는 값을 수집한다. - 2 : profiler 가 모든 operation 들에 대한 data 를 수집한다.
- me: mongodb 가 enterprise 에서 audit 기능을 제공하는데, 이 기능으로 audit 기능의 일부로 사용할 수 있을 듯도 하다.
use mydb
// 현재 profile level 알아보기
db.getProfilingLevel()
db.getProfilingStatus()
// profile level 변경
db.setProfilingLevel(2)
db.system.profile.find().pretty()
최근 mongod event 보기
// code from NoSqlBooster
function showMongoLog({filter}){
function getMostRecent1024MongodEventLog() {
if (parseFloat(db.version()) < 3.0) throw new Error("Require MongoDB 3.0 or above")
const logFilter = "global"; //possible value: global|rs|startupWarnings
const res = db.adminCommand({ getLog: logFilter });
if (!res.ok) throw res;
return res.log;
}
const logLines=getMostRecent1024MongodEventLog();
const logEntries=mb.parseMongoDBLog(logLines)
.filter(filter)
return logEntries
}
const filter=it => true
//&& moment(it.timestamp).isBetween("2022-04-04 17:03","2022-04-05 17:03") //The match is exclusive.
//&& /command.*aggregate/.test(it.message) //test message
//&& (["Debug","Info","Warning","Error","Fatal"].indexOf(it.severity)>-1) //severity
//&& it.component==="COMMAND" //component, COMMAND,INDEX,QUERY,REPL,WRITE. use db.getLogComponents() to get all
&& it.duration_ms >= 100
showMongoLog({filter})
mongod.conf 에 설정
operationProfiling:
mode: <string> off|slowOp|all
slowOpThresholdMs: <int>
slowOpSampleRate: <double>
filter: <string>
댓글 없음:
댓글 쓰기