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 は最新のセキュリティをリードし、開発から本番まで最新のアプリケーションを保護します。

推薦する

ウェブサイトのトラフィックを増やすには、まずキーワードカバレッジをしっかり行う必要があります。

キーワード カバレッジとは何でしょうか? 以前、この用語について多くのウェブマスターと話したとき、そ...

小紅書は密かに海外へ出向く

毎日2時間以上「小紅書」(「小紅書」ユーザーの別名)を利用するヘビーユーザーとして、ここ数ヶ月、香港...

草の根ウェブサイト構築 地域フォーラム情報ネットワーク初期プロモーション実践

2013 年 9 月、私は Web サイトの作り方を学び始めることにしました。仕事中に自由時間ができ...

ispserver: ロシアの VPS、ロシアのサーバー、無制限のトラフィック、PayPal 支払い

ispserver、設立年は不明ですが、ドメイン名は1998年に登録され、公式発表情報は2001年か...

2012年は質の高い外部リンク構築チャネルが期待されます

多くの人は、SEO最適化を外部リンク構築、コンテンツ最適化と要約したり、外部リンクが王様、コンテンツ...

QRコード標準化プラットフォームは今年末に開始予定。敷居が低く、収益化も可能。

ショッピングや支払いでもウイルスが拡散する可能性がある。セキュリティの問題は真剣に受け止める必要があ...

Weiboマーケティング事例:Durex公式WeiboのUGC生成の裏側

2987件のリポストと536件のコメントは、@Durex公式Weiboとしてはかなり印象的な数字です...

Hawkhost - すべてのドメイン/ドメイン名/仮想ホスト/半仮想ホスト/VPS/更新時も同じ価格が60%オフ [/07/25]

Hawkhostの7月末のプロモーションがこちらです。ドメイン名登録、仮想ホスト、リセラーホスト、セ...

キングソフトのモバイルアンチウイルスのボイコットが続く: 一部のエージェントが広告設定を変更

9月21日午前、キングソフトの「モバイルアンチウイルス」共同ボイコットに新たな進展があった。ボイコッ...

alpha1servers 超高速 VPS 推奨/XEN/KVM/Krypt/Quadranet

alpha1servers は 2011 年に設立された VPS プロバイダーです。超高速のアジアに...

第7回ビッグデータバッチ処理プラットフォームと分散分析データベーステストの観察

2018年12月13日、中国情報通信研究院と中国通信標準化協会が主催し、TC601ビッグデータ技術標...

QQ Space は Baidu のキーワードをランク​​付けするために使用できますか?

私たちのグループの友人が、QQ Spaceがキーワードランキングに参加できるかどうか尋ねてきましたが...

どのようなウェブサイトがBaiduのホームページにランクインできるのか

みなさん、こんにちは。私はハルビン仮想現実ウェブサイト設計です。最近、百度のキーワードランキングが1...

BBSは「役に立たないもの」となり、ネットユーザーの間では、青春はいずれ消え去るだろうと懐かしみ、嘆く声が上がっている。

皆さんはBBSを使ったことがありますか?使ったことがあると答えた人は、おそらく「青春はいつか消えてし...