MongoDB 的简单 HTTP/TCP 健康检查 [英] Simple HTTP/TCP health check for MongoDB
问题描述
我需要为 Docker 容器内的 MongoDB 实例创建健康检查.
I need to create a Health Check for a MongoDB instance inside a Docker container.
虽然我可以通过 CLI 进行解决并使用 Mongo Ping,但最好的选择是创建一个简单的 HTTP 或 TCP 测试.在标准 ping 测试中,默认 27017 端口没有响应.
Although I can make a workaround and use the Mongo Ping using the CLI, the best option is to create a simple HTTP or TCP testing. There is no response in the default 27017 port in standard ping testings.
有什么值得信赖的方法吗?
Is there any trustworthy way to do it?
推荐答案
我为 mongodb 创建了一个简单的健康检查,它使用 mongo
客户端发送一个简单的查询请求(例如.db.stats()
) 到服务器.
I've created a simple health check for mongodb, it uses the mongo
client to send a simple query request (eg. db.stats()
) to the server.
$ mongo 192.168.5.51:30000/test
MongoDB shell version: 3.2.3
connecting to: 192.168.5.51:30000/test
mongos> db.stats()
{
"raw" : {
"set1/192.168.5.52:27000,192.168.5.53:27000" : {
"db" : "test",
"collections" : 8,
"objects" : 50,
"avgObjSize" : 73.12,
"dataSize" : 3656,
"storageSize" : 53248,
"numExtents" : 8,
"indexes" : 8,
"indexSize" : 65408,
"fileSize" : 469762048,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 6
},
"extentFreeList" : {
"num" : 28,
"totalSize" : 184807424
},
"ok" : 1
}
},
"objects" : 50,
"avgObjSize" : 73,
"dataSize" : 3656,
"storageSize" : 53248,
"numExtents" : 8,
"indexes" : 8,
"indexSize" : 65408,
"fileSize" : 469762048,
"extentFreeList" : {
"num" : 28,
"totalSize" : 184807424
},
"ok" : 1
}
您也可以在一行中执行此操作:
You can also do this in one line:
$ echo 'db.stats().ok' | mongo 192.168.5.51:30000/test --quiet
1
希望对您有所帮助.
更新:
正如@luckydonald 所说,ping
命令更好,所以你可以这样做:
As @luckydonald said, the ping
command is better, so you can do it like:
$ mongo --eval 'db.runCommand("ping").ok' localhost:27017/test --quiet
1
感谢@luckydonald.
Thanks for @luckydonald.
这篇关于MongoDB 的简单 HTTP/TCP 健康检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!