[컴][db] mongo db profiling

 

몽고 최적화 속도 / 확인 / 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>

Reference

  1. db.setProfilingLevel() — MongoDB Manual
  2. Configuration File Options — MongoDB Manual

댓글 없음:

댓글 쓰기