2016-06-15 2 views
2

Мне нужно создать проверку работоспособности экземпляра MongoDB внутри контейнера Docker.Простая проверка работоспособности HTTP/TCP для MongoDB

Хотя я могу сделать обходной путь и использовать Mongo Ping с помощью CLI, лучшим вариантом является создание простого тестирования HTTP или TCP. На стандартном выводе 27017 в стандартных тестах ping нет ответа.

Есть ли какой-либо надежный способ сделать это?

ответ

5

Я создаю проверку работоспособности для 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 лучше, так что вы можете сделать это нравится:

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

Спасибо за @luckydonald.

+0

Отлично! Решила мою проблему. –

+0

Что делать, если мы хотим проверить удаленный db, поэтому без 'mongo', вместо локального? –

+2

_ [Этот комментарий] (https://stackoverflow.com/questions/8726152/mongodb-how-to-get-db-stats-from-api#comment13659027_8727314) предупреждает: _ Предупредите, что dbstats блокирует вашу базу данных, пока она работает, поэтому он не подходит для производства. https://jira.mongodb.org/browse/SERVER-5714 – luckydonald