MongoDB的简单HTTP/TCP运行状况检查
我需要在Docker容器中为MongoDB实例创建运行状况检查 尽管我可以使用CLI解决问题并使用Mongo Ping,但最好的选择是创建一个简单的HTTP或TCP测试。在标准ping测试中,默认27017端口中没有响应MongoDB的简单HTTP/TCP运行状况检查,mongodb,http,tcp,Mongodb,Http,Tcp,我需要在Docker容器中为MongoDB实例创建运行状况检查 尽管我可以使用CLI解决问题并使用Mongo Ping,但最好的选择是创建一个简单的HTTP或TCP测试。在标准ping测试中,默认27017端口中没有响应 有可靠的方法吗?我为mongodb创建了一个简单的健康检查,它使用mongo客户端向服务器发送一个简单的查询请求(例如db.stats()) $ mongo 192.168.5.51:30000/test MongoDB shell version: 3.2.3 connec
有可靠的方法吗?我为mongodb创建了一个简单的健康检查,它使用
mongo
客户端向服务器发送一个简单的查询请求(例如db.stats()
)
$ 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
}
您也可以在一行中完成此操作:
$ echo 'db.stats().ok' | mongo 192.168.5.51:30000/test --quiet
1
希望能有所帮助
更新:
正如@luckynald所说的,ping
命令更好,因此您可以像这样做:
$ mongo --eval 'db.runCommand("ping").ok' localhost:27017/test --quiet
1
感谢@Luckynald。一个解决方案是使用最小的MongoDB客户端,该客户端使用脚本语言编写,容器中有解释器 例如,Python中有一个零依赖项:如果您只需要一个简单的“ping”,那么您也可以使用
curl
:
curl --connect-timeout 10 --silent --show-error hostname:27017
如果您收到“错误”,看起来您正试图通过本机驱动程序端口上的HTTP访问MongoDB。
那么您的MongoDB正在运行并回复一个答案
或使用
mongo --norc --quiet --host=hostname:27017 <<< "db.getMongo()"
mongo--norc--quiet--host=hostname:27017太棒了!解决了我的问题。如果我们想检查远程数据库,那么没有mongo
binary,而不是本地数据库呢?警告:请注意,dbstats会在数据库运行时阻塞数据库,因此不适合在生产环境中使用。一个好的替代方法可能是命令。正如您所期望的,它是轻量级的,甚至可以在负载较重的情况下从服务器返回,这使得它非常适合运行状况检查命令TKS。伙计们,我使用了db.stats(),但现在我将切换到ping命令。