ローカルの TCP リレーは、自身が TLS の終端にならずに Monit の HTTPS レポートを SOCKS 経由で運べます。ルーティングは 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

1 行目は hosts ファイルのエントリ、2 行目が Monit の設定です。実際のコレクター資格情報を、必要な URL エンコードとともに使ってください。hosts ファイルの対応付けは、同じマシンでその名前を使う他のアプリケーションにも影響します。

HTTPS ハンドシェイクは依然としてコレクターのものなので、そのホスト名を維持し、意図した証明書検証ポリシーも保ってください。URL を localhost に変えると、Monit が検証を求める識別子が変わります。

リレーは、loopback に再マップされた名前を引くのではなく、意図的にコレクターの実 IP を使います。コレクターのアドレスが変わったらその IP を更新してください。リスナーはレポート経路の一部として利用可能に保ちます。fork は受け付けたリレー接続を個別に処理します。

関連記事