Prometheus が NAT 経由でメトリックをスクレイピングできるようにするツール - PushProx

Prometheus が NAT 経由でメトリックをスクレイピングできるようにするツール - PushProx

Prometheus は Pull モードを使用して監視インジケーターをプルすることがわかっていますが、直接アクセスできないシナリオでは、追加のメソッドが必要になります。このシナリオでは PushProx が使用されます。 PushProx は、メトリックをプルするための Pull モデルに従いながら、Prometheus が NAT やその他の同様のネットワーク トポロジを通過できるようにするクライアントおよびプロキシです。

建築

PushProx は主にプロキシとクライアントの 2 つの部分で構成されます。プロキシは、Prometheus サーバーからメトリック要求を受信する役割を担い、要求情報をクライアントにプロキシします。クライアントはローカル デバイスからメトリックを取得した後、その結果をプロキシに返します。プロキシは Prometheus がアクセスできる場所にデプロイする必要があり、クライアントは収集が必要なノードが配置されているネットワークにデプロイされます。

以下のネットワーク環境に適用可能です。

  • Prometheus はクライアント ECS に直接アクセスできません。
  • Prometheus は、クライアントが配置されている VPC 内の ECS (PushProx プロキシ) にアクセスでき、イントラネットを貫通するかパブリック ネットワークを公開することで PushProx プロキシに到達できます。
  • 顧客 EC と PushProx エージェントは同じ VPC 内にあります。

各クライアントには FQDN 識別子があります。 Prometheus は PushProx を通じてターゲット fqdn-x を取得すると、次の操作を実行します。

  • クライアントはプロキシにフェッチ要求をポーリングし、そのポーリングに FQDN を含めます (1)。クライアントはプロキシに POST リクエストを送信しますが、プロキシは応答しません。
  • Prometheusはプロキシ(2)を介してホスト名fqdn-xを持つターゲットをクロールしようとします。 Prometheus は GET リクエストをプロキシに送信し、プロキシはそれを fqdn-x に基づいて正しいクライアントにルーティングします。現時点ではプロキシは応答しません。
  • フェッチ要求は、ステップ 1 (3) のクライアント POST 要求に応答してプロキシがクライアントに送信する応答メッセージに含まれています。
  • フェッチ要求はクライアントによって実行されます(4)。
  • キャプチャされたデータにはインジケーター(5)の応答が含まれており、エージェント(6)に公開されます。
  • プロキシは、Prometheusがステップ2でGETリクエストを送信すると、それを応答メッセージとしてP​​rometheus(7)に返します。

PushProx はすべての HTTP ヘッダーを透過的に渡し、圧縮や accept-encoding などの機能はスクレイピング Prometheus サーバーに依存します。

テスト

ここでは、テストに次のコンポーネントを使用する必要があります。

  • node_exporter はノードのいくつかの基本的なメトリックを公開します。
  • pushprox-client と node_exporter は、データを収集する必要がある NAT 環境のノードに一緒にデプロイされます。
  • pushprox-proxy と prometheus は両方とも外部ネットワークにデプロイされます。 prometheus は pushprox-proxy サービスにアクセスできます。

プロキシはクライアント上でTLS認証を実行します

プロキシとクライアントの間に認証がなく、クライアントの IP アドレスが不確かで、プロキシがクライアントのファイアウォール ポリシーを構成できないため、プロキシとクライアントの間に認証を追加する必要があります。

tls を使用してクライアントを検証します。 Pushprox-proxy は tls をサポートしていないため、pushprox-proxy へのリバース プロキシとして nginx が必要であり、次に tls が nginx で構成され、ssl_verify_client が nginx で有効になります。 pushprox-client は、nginx への TLS クライアント接続をサポートします。 pushprox-client では、SSL 標準 x509 で定義された拡張機能である SAN (Subject Alternative Name) をサポートするために tls が必要です。したがって、自己署名証明書を生成するときは SAN をサポートする必要があります。ここで、https://github.com/ljq/gen-tlsv3-san-ca を参照して自己署名証明書を生成できます。

pushprox-proxyを起動する

pushprox-proxy はパブリック ネットワーク上のサーバーに展開する必要があり、各クライアントとの長い接続を維持する必要があります。クライアントが多数ある場合、プロキシは負荷分散を考慮する必要があります。

 ./pushprox-プロキシ

nginxの設定

nginx リバース プロキシを pushprox-proxy に接続し、nginx で tls を設定します (pushprox.conf):


アップストリームプロキシバックエンド{
サーバー127.0.0.1 : 8080 ;
}
サーバー{
443 ssl をリッスンします
サーバー名promprox .k8s .local ;
ssl オン;
ssl_certificate / opt / xk-self-cert / server .crt ; #証明書の場所を設定する
ssl_certificate_key / opt / xk-self-cert / サーバー.key ; #キーの場所を設定する
ssl_client_certificate / opt / xk-self-cert / ca .crt ; #双方向認証
ssl_verify_client オン; #双方向認証
ssl_session_timeout 5分;
ssl_プロトコルSSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ; # このプロトコルに従って設定する
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256 : HIGH : !aNULL : !MD5 : !RC4 : !DHE ; #このスイートに従って構成する
ssl_prefer_server_ciphers オン;
位置/ {
proxy_pass http :// prox-backend /;
}
}

クライアントを起動する

pushprox-client は、自己署名証明書の ca とクライアント crt を構成する必要があります。

 ./ pushprox-client --proxy-url = https :// promprox .k8s .local --tls .cacert =/ opt / xk-self-cert / ca .crt --tls .cert =/ opt / xk-self-cert / client .crt --tls .key =/ opt / xk-self-cert / client .key

プロメテウスを起動

 ./ prometheus --config .file = prometheus-prox .yml

設定ファイルは次のようになります。

 # プロメテウスprox.yml
グローバル:
スクレイプ間隔: 15秒
評価間隔: 15秒
# スクレイピングするエンドポイント1 つだけ含むスクレイピング設定:
# ここプロメテウスそのものです。
scrape_configs : スクレイプ設定:
- ジョブ名: ノード
proxy_url : http : //xx.xx.xx.xx :8080 / # プロキシアドレスとして設定
静的構成:
- ターゲット: [ ' ceph-local:9100' ] # クライアントFQDN 「client」 であると想定します

通常、インジケーターデータを取得できます。

<<:  コンテナ管理に最適な Docker の代替品 9 つ

>>:  VMware は最新のセキュリティをリードし、開発から本番まで最新のアプリケーションを保護します。

推薦する

Vultr: クラウドサーバー、50ドル無料、16のデータセンター、いつでも作成および削除可能、Alipayが利用可能

Vultr が今年 3 月に開催した最新のイベントでは、新規ユーザーに 50 ドルを直接提供し、クラ...

クラウドコンピューティングは銀行業務に何をもたらすのでしょうか?

クラウド コンピューティングは、現代の銀行業務の発展に大きな変化をもたらしました。実際、クラウド コ...

業界ウェブサイト開発の限界の観点から、新しい業界サイトの発展の道筋を議論する

数年前に業界のウェブサイトを運営し、今日まで続けていれば、ある程度の成功を収めていたでしょう。現在、...

共通のウェブマスターウェブサイト分析と貢献経験の共有

はじめに: 数日前、28tui の創設者 Mou Changqing 氏がブログで批判しているのを見...

Baiduにインデックスされたページを同じ日にすべて翌日に削除する問題を解決

BaiduがPhoenix Nest広告計画を開始して以来、Baiduは検索エンジンにも適切な調整を...

本格的な相互接続の到来が加速しており、3つの主要な技術トレンドは注目に値する

テンセント副社長、クラウド・スマート産業グループCOO、テンセントクラウド社長の邱月鵬氏は11月3日...

ウェブサイトのランキングを安定させるには、5つの重要なポイントを実行するだけで十分です

ウェブマスターとして、私たちは「王国を征服するのは簡単だが、それを維持するのは難しい」という古い格言...

新年の商品戦争:沈没市場でのアリババ、JD.com、ピンドゥオドゥオの最終決戦

新年の商品を準備することは、主要な電子商取引プラットフォームが逃すことのできない、プラットフォームの...

ローカルポータルの運用経験:SEO最適化と外部リンク

近年のローカル ウェブサイトの人気と競争の少なさにより、ローカル ウェブサイトはウェブマスターの友人...

xinix-$3.99/Xen/512m メモリ/20g ハードディスク/1T トラフィック

XiNiX™ InfoTech Pvt. Lt は 2005 年に設立されたホスティング会社で、主に...

史上最大のクラウドコンピューティング障害トップ10

企業がクラウド サービスの障害を回避できるように、NetworkWorld は、世界中の多くの We...

5 つ星評価システムは信頼できないのでしょうか? 映画サイトにもっと良い選択肢はありますか?

多くの人がオンラインで映画リソースを探すとき、まず映画の評価を見て、それから比較的評価の高い映画を選...

Baidu、開発者にAPIを提供するクラウドサービスプラットフォームを正式に開始

9月3日午前のニュース、Baidu World 2012カンファレンスが本日北京で開催され、その中で...

Bilibili の野望: 帝国になるか、それともエコシステムになるか?

ビリビリの壮大な戦略:帝国になるか、エコシステムを構築するか?私たちの旅は星と海へ。ビリビリは帝国を...