我有一个在端口 9083 上运行 apache hive 服务的服务器。问题是它不支持http协议(但使用thrift协议)。所以我不能简单地添加
HEALTHCHECK CMD http://127.0.0.1:9083 || exit 1 # this check fails
Run Code Online (Sandbox Code Playgroud)
我只想检查该端口是否打开。我在服务器上有netstat和curl但没有nc。
到目前为止,我尝试了以下选项,但没有一个适合作为健康检查。
netstat -an | grep 9083 | grep LISTEN | echo $? # This works
netstat -an | grep 9084 | grep LISTEN | echo $? # but so does this
Run Code Online (Sandbox Code Playgroud)
我从上面解释的问题是它只是告诉我我的语法是正确的,但并没有真正测试该端口是否真的在监听
因为当我这样做时,netstat -an我得到以下输出,这清楚地表明只是9083在听而不是9084
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0
0.0.0.0:9083 0.0.0.0:* LISTEN tcp 0 0
Run Code Online (Sandbox Code Playgroud)
Pio*_*yna 10
它的较短版本:
netstat -ltn | grep -c 9083
Run Code Online (Sandbox Code Playgroud)
使用的选项:
网络统计:
-l- 显示监听服务器套接字-t- 仅显示 TCP 套接字-n- 不解析名称-c- 返回一些已建立的行,但它也提供了有用的退出代码;如果找到则为 0,如果未找到则为 1虽然回答了一个老问题,但对于未来的谷歌员工来说,以下内容对我有用:
HEALTHCHECK CMD netstat -an | grep 9083 > /dev/null; if [ 0 != $? ]; then exit 1; fi;
Run Code Online (Sandbox Code Playgroud)
您可以使用 /dev/tcp
像这样 :
printf "GET / HTTP/1.1\n\n" > /dev/tcp/127.0.0.1/9083
有关更多信息,您可以查看:http : //www.tldp.org/LDP/abs/html/devref1.html#DEVTCP
| 归档时间: |
|
| 查看次数: |
7392 次 |
| 最近记录: |