如何從mongodb的日誌片段「I COMMAND [conn10217]」 中的conn10217定位到是那個mongos連接過來的發起的command請求,能定位到是哪個伺服器(ip)上過來的請求。
怪我咯2017-05-02 09:27:04
1.透過查看mongodb的原始碼,在客戶端執行緒初始化中有這樣一處程式碼。
string fullDesc = desc;
if ( str::equals( "conn" , desc ) && mp != NULL )
fullDesc = str::stream() << desc << mp->connectionId();
2.從原始碼可以看出conn後面的數字是內部的分配的連接id,且透過觀察mongodb的啟動日誌發現這個id是從1開始每次遞增1,在日誌會打出對端的資訊(ip :port)和#後的connectionId。
3.綜上只需要過濾mongodb的日誌mongod.log(我這裡的日誌檔名命名為:mongod.log)即可定位是哪個主機發過來的指令,指令如下:
cat mongod.log | grep accept | grep "#10217"