MongoDB 的简单 HTTP/TCP 健康检查

2024-06-27

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

希望有帮助。

UPDATE:

正如@luckydonald 所说,ping命令更好,所以你可以这样做:

$ mongo --eval 'db.runCommand("ping").ok' localhost:27017/test --quiet
1

感谢@luckydonald。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB 的简单 HTTP/TCP 健康检查 的相关文章

随机推荐