领事1.2.1在命令参数中使用管道定义运行状况检查

时间:2018-07-30 03:48:46

标签: consul consul-template

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

# echo ruok | nc localhost 2181
imok

因此,我在此json文件中定义了运行状况检查,但是,我无法在该命令中找到任何显示如何处理管道的文档。关于定义健康检查的Hashi Corp Consul文档为here

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

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

2 个答案:

答案 0 :(得分:1)

不建议使用脚本键,args是正确的方法:

  

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

所以我知道了:

Environment.js

对于带有通过管道传递到另一个命令的检查命令

答案 1 :(得分:0)

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

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