如何在Couchbase日志中查看非REST/控制台请求的客户端IP?
我懂你现在的困扰——用Node.js SDK连接Couchbase集群,翻遍了官方日志文档却找不到客户端IP的痕迹。别着急,这其实是因为SDK连接的日志记录逻辑和REST API/控制台不太一样,下面几个方法应该能帮你找到答案:
1. 检查Couchbase节点的access.log文件
默认情况下,Couchbase的访问日志会记录所有客户端的连接信息,但SDK相关的日志条目可能没在你查阅的文档里明确标注。你需要找到集群节点上的access.log(通常路径:Linux是/opt/couchbase/var/lib/couchbase/logs/,Windows是C:\Program Files\Couchbase\Server\var\lib\couchbase\logs\)。
在日志里搜索包含connection的条目,或者过滤带有Node.js SDK标识的内容,典型的日志格式类似:
[2024-05-20T14:30:00.000Z] INFO couchdb: connection from 192.168.1.105:56789 accepted
Node.js SDK的连接请求会带有couchbase-nodejs相关的用户代理标识,用这个关键词过滤会更精准。
2. 启用SDK本地调试日志
如果服务器端日志还是没线索,你可以直接在自己的Node.js代码里开启SDK的调试日志,实时追踪连接的IP信息。修改你的代码如下:
var couchbase = require("couchbase"); // 启用SDK的TRACE级日志,会输出详细连接细节 couchbase.Logger.enable(couchbase.Logger.TRACE); var userCouchbaseIp = subscriptionConf.CouchbaseIp; var couchbaseBucketName = subscriptionConf.couchbaseBucketName; var cluster = new couchbase.Cluster(userCouchbaseIp); // ... 后续业务代码
运行代码后,控制台会输出SDK与集群交互的全量日志,其中就包含客户端本地IP、目标集群节点IP等关键信息。
3. 通过集群统计工具收集连接数据
你还可以用Couchbase的CLI工具cbcollect_info导出集群的完整统计数据,里面包含所有活跃客户端的连接详情。执行命令:
cbcollect_info /your/output/directory
在生成的压缩包中,找到nodes/<节点名称>/stats.txt文件,搜索curr_connections相关条目,对应的IP就是客户端的地址。
另外要注意:如果你的客户端部署在容器或反向代理后面,Couchbase日志里可能显示的是代理服务器的IP。这种情况下,你需要检查代理配置是否正确传递了X-Forwarded-For头,或者直接在客户端代码里通过os.networkInterfaces()获取本地IP来确认。
内容的提问来源于stack exchange,提问作者Anjalee Chakrabarty

