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:
$ echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
1
感谢@luckydonald.
Thanks for @luckydonald.
这篇关于MongoDB的简单HTTP/TCP运行状况检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!