2

我正在使用 Consul 1.2.1 版并尝试实现运行命令的运行状况检查:

# echo ruok | nc localhost 2181
imok

因此,我在这个 json 文件中定义了运行状况检查,但是,我找不到任何说明如何在命令中处理管道的文档。Hashi Corp Consul 关于定义健康检查的文档在这里

这是我尝试过的,但不正确。

{
  "service": {
    "name": "testapp",
    "port": 2181,
    "check": [
        {
            "args": ["echo ruok | nc localhost 2181"],
            "interval": "15s",
            "timeout": "2s"
        }
    ]
  }
}
4

2 回答 2

1

不推荐使用 script 键,args 是正确的方法:

Args (array) - 指定要运行以更新检查状态的命令参数。在 Consul 1.0 之前,检查使用单个 Script 字段来定义要运行的命令,并且总是在 shell 中运行。在 Consul 1.0 中,添加了 Args 数组,以便可以在没有 shell 的情况下运行检查。Script 字段已弃用,您应该在 Args 中包含 shell 以在 shell 下运行,例如。“args”:[“sh”,“-c”,“...”]。

所以我有这行:

"args": ["bash", "-c", "/sbin/ss -l | grep vrrp"],

对于带有管道的检查命令到另一个命令

于 2019-05-02T07:51:27.503 回答
0

您应该使用script检查,并在该部分中以不同的方式格式化您的 json check

{
  "service": {
  "name": "testapp",
  "port": 2181,
  "check": {
             "script": "echo ruok | nc localhost 2181",
             "interval": "15s",
             "timeout": "2s"
           }
    }
}
于 2018-11-21T18:30:09.007 回答