【入門編】Prometheusの多段プロキシ構成:踏み台サーバー経由やネットワーク分離環境におけるセキュアなスクレイピング設計 – 運用監視・オブザーバビリティ活用バイブル

こんにちは。オブザーバビリティの深淵を覗き込み、システムと対話するエンジニアの皆さん。

今日は、Prometheusという強力な武器を「ネットワークの壁」の向こう側にまで届ける、少し高度で、しかし現場では避けて通れない「多段プロキシ・セキュア監視」の極意を伝授します。

「監視したいサーバーが閉域網にある」「セキュリティ要件で直接アクセスできない」。そんな絶望的な状況でも、Prometheusの設計思想を理解していれば、スマートに解決できるのです。

—

1. なぜ「閉域網の監視」は難しいのか?

Prometheusは「プル型(Pull-based)」の監視ツールです。つまり、監視対象(Exporter)に対して、Prometheusサーバーが自ら「元気ですか?」と聞きに行くスタイルです。

しかし、Prometheusが対象に直接アクセスできないネットワーク構成(VPCの境界、DMZ、多段踏み台など)では、この「プル」が成立しません。ここで多くの初心者が「プッシュ型(Pushgateway)」に逃げがちですが、それは運用の複雑さを増やすだけ。

今日は、Prometheusの思想を崩さず、ネットワークを貫通させるプロフェッショナルな手法を紹介します。

—

2. ネットワークの壁を突破する:SSHトンネルとリバースプロキシ

最も堅実なのは、SSHポートフォワードまたはリバースプロキシを用いた経路確保です。

手法A:SSHトンネル(手軽で強力)

監視対象のネットワーク内に踏み台(Bastion)がある場合、踏み台を介したトンネルを掘るのが最も簡単です。

踏み台を経由して、閉域網内のExporter(9100)を、ローカルの9101へ転送する
-L [ローカルポート]:[監視対象IP]:[対象ポート]
ssh -f -N -L 9101:10.0.0.5:9100 user@bastion-host

これにより、Prometheus側からは `localhost:9101` を叩くだけで、閉域網のサーバーが見えるようになります。

手法B:Nginxリバースプロキシ(本番運用の定石)

踏み台でNginxを動かし、閉域網内のExporterを外部公開(認証付き)する構成です。

踏み台サーバー上のNginx設定例
server {
listen 443 ssl;
location /metrics {
# ここでBasic認証をかけるのがプロの嗜み
auth_basic “Monitoring Access”;
auth_basic_user_file /etc/nginx/.htpasswd;

# 閉域網内のExporterへ転送
proxy_pass http://10.0.0.5:9100/metrics;
}
}

ポイント: `proxy_pass` を使うことで、Prometheusは「HTTPS経由でセキュアに」かつ「正規のプロトコルで」メトリクスを収集できます。

—

3. 【実践】HelloWorld:セキュアなスクレイピング設定

では、実際にPrometheusにこの経路を認識させましょう。`prometheus.yml` はこう書きます。

scrape_configs:

  • job_name: ‘closed-network-server’

scheme: https # リバースプロキシ越しなのでHTTPS推奨
basic_auth: # 認証情報を忘れずに
username: ‘admin’
password: ‘your-password’
static_configs:

  • targets: [‘bastion-host.example.com’] # プロキシサーバーを指定

この設定により、Prometheusは「壁の向こう」にあるメトリクスを、あたかも隣にあるかのように収集し始めます。

—

4. Alertmanagerのフェイルオーバー:監視の「死」を防ぐ

ネットワークが分断されたとき、Alertmanagerが動かないと障害に気づけません。ここで重要なのは「監視の二重化」です。

1. Prometheusの冗長化: 2つの独立したPrometheusサーバーを立て、同じターゲットをスクレイピングさせます。
2. Alertmanagerのクラスタリング: 両方のPrometheusが同じAlertmanagerクラスタへ通知を送るようにします。

PrometheusのAlerting設定
alerting:
alertmanagers:

  • static_configs:
  • targets: [‘alertmanager-1:9093’, ‘alertmanager-2:9093’]

この構成なら、片方のネットワーク経路が遮断されても、もう一方が確実にアラートを届けます。これが、現場で震えるほど役立つ「落ちない監視」の鉄則です。

—

最後に:先輩からのアドバイス

「ツールを入れる」こと自体はゴールではありません。「ネットワークの境界線においても、メトリクスの流れをいかにして途絶えさせないか」を考えること。それがオブザーバビリティ・エンジニアとしての第一歩です。

最初はSSHトンネルのコマンド一つで苦労するかもしれません。でも大丈夫。エラーが出たら、まずは `curl` でその経路が本当に繋がっているかを確認してください。シンプルで論理的なトラブルシューティングこそが、あなたの技術を磨き上げます。

これをマスターすれば、どんな複雑なエンタープライズ環境でも「監視できません」と泣きつく必要はなくなりますよ。さあ、次はあなたの番です。システムの深淵を覗きに行きましょう。

タイトルとURLをコピーしました