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
}
これを1行で行うこともできます。
$ echo 'db.stats().ok' | mongo 192.168.5.51:30000/test --quiet
1
お役に立てば幸いです。
更新:
@luckydonaldが言ったように、ping
コマンドの方が優れているため、次のように実行できます。
$ echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
1
@luckydonaldをありがとう。
1つの解決策は、コンテナー内にインタープリターが存在するスクリプト言語で記述された最小限のMongoDBクライアントを使用することです。
たとえば、Pythonの依存関係がゼロの場合は次のようになります。 mongo_ping_client.py