2017-08-04 98 views
1

我的应用程序正在使用Couchbase Community Edition,并且由于存储区数量的限制,多个应用程序共享相同的存储区。这些应用程序都使用他们自己的应用程序特定的键前缀。有没有办法在Couchbase中获取文档删除日志?

它看起来像其中一个应用程序行为不当,并删除与其关键字前缀无关的文档。有没有办法查询日志,让我可以使用文档删除审核日志来通知删除?

对于故障排除,我需要删除的密钥,也许ip。获取已删除的密钥足以证明我的应用程序获得了自己的存储桶。

回答

0

您可以使用Couchbase数据库更改协议(DCP)客户端来监视删除操作。有关示例客户端,请参阅java-dcp-client,该客户端将记录消息的缺失和突变。

Mutation: MutationMessage [key: "test123", vbid: 20, cas: 1502245791579701248, 
    bySeqno: 1, revSeqno: 1, flags: 0, expiry: 0, lockTime: 0, 
    clength: 67] 
Deletion: DeletionMessage [key: "test123", vbid: 20, cas: 1502245805446594560, 
    bySeqno: 2, revSeqno: 2] 

检查新创建文档的过期时间,看看您是否无意中设置了文档的生存时间。

如果使用端口8091上的REST端点执行删除,它们将在http_access.log文件中报告。有关在您的环境中查找日志文件的位置的信息,请参阅Using Logs (4.5)。这也会给你提出请求的机器的IP地址。

http_access.log:127.0.0.1 - ui-token [08/Aug/2017:22:30:05 -0400] 
    "DELETE /pools/default/buckets/default/docs/test123 HTTP/1.1" 200 2 
    http://localhost:8091/ui/index.html Mozilla/5.0 (Macintosh; Intel Mac 
    OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/59.0.3071.115 Safari/537.36 
+0

嗨,杰夫。感谢您的回应。我们做客户端日志记录,但并非所有的客户端都使用相同的库,其中一些没有这种功能。 http日志将包含有关API调用的信息,如集群,节点,存储桶,视图,cdcr,压缩和用户api。我不认为CB有文件的api(这是一段时间的分离项目,我认为它已经停止)。无论如何,它并不适用于我的情况。 –

+0

Hi @JenoLaszlo。我提到的DCP客户端会直接与群集交谈,所以您至少知道文件何时被删除。但我想你必须能够独立运行应用程序,否则你无法知道哪个客户端应用程序负责删除。 –

相关问题