Я пытаюсь создать файл конфигурации monit, чтобы отслеживать, работает ли mongodb.
Вот мой файл конфигурации.
check process mongod with pidfile /var/run/mongodb/mongod.pid
group mongodb
start program = "/sbin/start mongod"
stop program = "/sbin/stop mongod"
if failed host 127.0.0.1 port 27017 protocol http
and request "/" with timeout 10 seconds then restart
Я всегда получаю следующую ошибку, и он перезапускает mongodb.
port response time FAILED to [localhost]:27017 type TCP/IP protocol HTTP
Я проверил и подтвердил, что mongodb работает. Я пытался подключиться к mongodb с помощью curl. Вот команда, которую я выполнил, чтобы проверить, работает ли http-соединение с монго.
curl -v localhost:27017
Вот результат, который я получаю.
* Rebuilt URL to: localhost:27017/
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 27017 (#0)
> GET / HTTP/1.1
> Host: localhost:27017
> User-Agent: curl/7.58.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Connection: close
< Content-Type: text/plain
< Content-Length: 85
<
It looks like you are trying to access MongoDB over HTTP on the native driver port.
* Closing connection 0
Не уверен, что делаю неправильно.
Тот же файл конфигурации работает на ubuntu 14.4, но не работает на ubuntu 18.4.
По какой-то причине у меня был ложноотрицательный ответ для MongoDB на CentOS 6.10
Это исправлено с помощью новой проверки протокола, реализованной в Monit.
if failed host 127.0.0.1 port 27017 protocol mongodb
then restart
Обратите внимание на новое имя протокола mongodb
Это просто отлично работает