本地 TCP 中继可以在自身不作为 TLS 端点的情况下,通过 SOCKS 承载 Monit 的 HTTPS 报告。路由既要为 HTTPS 保留采集器名称,又要为中继提供其真实目标地址。

假设采集器为 collector.example,地址是 203.0.113.40:443。在现有的基于 socat 的配置中,中继形如:

socat TCP4-LISTEN:9900,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4:socks.example:203.0.113.40:443,socksport=1080

这里 127.0.0.1:9900 接受 Monit 的本地连接。socks.example:1080 是 SOCKS4 服务器,它被要求连接 443 端口上真实的采集器地址。请把文档中的地址全部替换为部署值。

在本地把采集器名称解析到该监听器,并在 monitrc 中保留该名称:

127.0.0.1 collector.example

set mmonit https://monit:[email protected]:9900/collector

第一行是 hosts 文件条目;第二行是 Monit 配置。请使用真实的采集器凭据,并按需进行 URL 编码。hosts 文件映射也会影响该机器上使用此名称的其他应用。

HTTPS 握手仍属于采集器,因此应保留其主机名以及既定的证书校验策略。把 URL 改为 localhost 会改变 Monit 请求校验的身份。

中继刻意使用采集器的真实 IP,而不是查询被重新映射到 loopback 的名称。采集器地址变化时请更新该 IP。请让监听器保持可用,作为上报路径的一部分;fork 会分别处理已接受的中继连接。

相关文章