Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
494 views
in Technique[技术] by (71.8m points)

mongodb分片集群日志的连接定位

如何从mongodb的日志片段“I COMMAND [conn10217]” 中的conn10217定位到是那个mongos连接过来的发起的command请求,能定位到是哪个服务器(ip)上过来的请求。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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"

图片描述


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...