领事:运行状况检查无法调用:fork/exec 但手动调用 运行
Consul : Health Check is failed to invoke: fork/exec but running manualy
我运行这个命令
/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
我该如何解决?
"args"
- 应该是一个字符串数组。 Consul 将您的单个字符串视为要执行的命令,忽略空格。
您的支票应如下所示:
"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
否则你会得到权限被拒绝的错误。
我运行这个命令
/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
我该如何解决?
"args"
- 应该是一个字符串数组。 Consul 将您的单个字符串视为要执行的命令,忽略空格。
您的支票应如下所示:
"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
否则你会得到权限被拒绝的错误。