MongoDB 的简单 HTTP/TCP 健康检查 [英] Simple HTTP/TCP health check for MongoDB

查看:58
本文介绍了MongoDB 的简单 HTTP/TCP 健康检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆