Консул: проверка работоспособности не может быть вызвана: fork / exe c, но работает вручную - PullRequest
0 голосов
/ 14 января 2020

Я запускаю эту команду

/usr/bin/mysqladmin ping --host=192.168.56.35 --port=6033 --user=root --password=123

, и она говорит

mysqld is alive

, но когда я добавил ее в проверке здоровья

   "check": {
     "args": ["/usr/bin/mysqladmin ping --host=192.168.56.35 --port=6033 --user=root password=123"],
     "interval": "3s"}
   }

журнал говорит

[ERR] agent: Check "service:proxy2" failed to invoke: fork/exec /usr/bin/mysqladmin ping --host=192.168.56.35 --port=6033 --user=root password=123: no such file or directory

как я могу решить эту проблему?

1 Ответ

1 голос
/ 04 февраля 2020

"args" - должен быть массив строк. Консул видит вашу единственную строку как команду для выполнения, игнорируя пробелы.

Ваш чек должен выглядеть примерно так:

   "check": {
     "args": ["/usr/bin/mysqladmin", "ping", "--host=192.168.56.35", "--port=6033", "--user=root", "password=123"],
     "interval": "3s"}
   }

При желании вы можете использовать вместо него следующее, поскольку строка передается /bin/sh, ее не нужно делить на подстроки. (в большинстве примеров для Consul Checks используется этот синтаксис, поэтому он должен работать окончательно):

   "check": {
     "args": ["/bin/sh", "-c", "/usr/bin/mysqladmin ping --host=192.168.56.35 --port=6033 --user=root password=123"],
     "interval": "3s"}
   }

Также убедитесь, что пользователь, под которым работает процесс агента Consul, может выполнить /usr/bin/mysqladmin, иначе вы получите в доступе отказано в разрешении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...