暂无图片
如何获取mongos当前链接的客户端信息
我来答
分享
云_2019
2023-07-27
如何获取mongos当前链接的客户端信息

问题:运维工程师需要查询Mongos当前链接的客户端相关信息,如当前已链接客户端的Opid和IP的正确信息,以方便急于处理会话问题,但是我用以下命令输出存在重复的ip地址:

代码:

mongos>db.currentOp(true).inprog.forEach(function(item){if (item.clientMetadata){if (item.clientMetadata.mongos){print(item.opid,item.clientMetadata.mongos.client,item.active,item.clientMetadata.driver.name)}}})   

期望:

能获取唯一的opid和ip地址,即去重以后的opid和ip地址。

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
豆宇斯

db.currentOp(true).inprog.reduce((accumulator, connection) => { ipaddress = connection.client ? connection.client.split(":")[0] : "Internal"; accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1; accumulator["TOTAL_CONNECTION_COUNT"]++; return accumulator; }, { TOTAL_CONNECTION_COUNT: 0 })

暂无图片 评论
暂无图片 有用 1
打赏 0
云_2019
题主
2023-07-31
您好,我收到你的回答,但是还不是我要的结果 我需要去重是clinets和opid的清单:如格式 cients: 192.168.3.12 192.168.3.13 opid 4314 4432 4243 暂无图片
云_2019

您好,我收到你的回答,但是还不是我要的结果

我需要去重是clinets和opid的清单:如格式

cients:

192.168.3.12

192.168.3.13

opid

4314

4432

4243

暂无图片 评论
暂无图片 有用 0
打赏 0
豆宇斯

要分别显示?不是一一对应?

暂无图片 评论
暂无图片 有用 0
打赏 0
豆宇斯

var uniqueClients = new Set();
var uniqueOpids = new Set();

//去掉端口,去重IP
db.currentOp(true).inprog.forEach(function (opDoc) { if (opDoc.client) { var ipWithPort = opDoc.client; var ip = ipWithPort.split(':')[0]; var opid = opDoc.opid; uniqueClients.add(ip); uniqueOpids.add(opid); }});

// IP
uniqueClients.forEach(function (client) { print(client);});

//opid
uniqueOpids.forEach(function (opid) { print(opid);});

暂无图片 评论
暂无图片 有用 0
打赏 0
云_2019
题主
2023-08-02
不对,执行以后,没有结果输出
豆宇斯

如果要一对多

var uniqueClients = new Set();
var clientOpidMap = {};

db.currentOp(true).inprog.forEach(function(opDoc) { if (opDoc.client) { var ipWithPort = opDoc.client; var ip = ipWithPort.split(':')[0]; var opid = opDoc.opid; uniqueClients.add(ip); if (clientOpidMap[ip]) { clientOpidMap[ip].push(opid); } else { clientOpidMap[ip] = [opid]; } }});

uniqueClients.forEach(function(client) { var opids = clientOpidMap[client]; var opidsString = opids.filter(Boolean).join(', '); print("IP:", client, "opid:", opidsString);});

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交