1. 概要PushgatewayはPrometheusのコンポーネントです。デフォルトでは、 Prometheus サーバーはエクスポーターを介してデータをアクティブに取得します (デフォルトではプル データが採用されています)。 Pushgateway はエクスポーターを介してデータをPushgatewayにアクティブにプッシュし、その後Prometheus はPushgateway データをアクティブにプルします。ユーザーは、監視対象のデータを Pushgateway に送信するためのカスタム監視スクリプトを作成できます。 Prometheus サーバーの観点から見ると、 Prometheus サーバーはさまざまなデータ ソース (Exporter や Pushgateway など) からデータを積極的に取得します。 1. Pushgatewayの利点:- デフォルトでは、Prometheus はスケジュールされたプル モードを使用してターゲット データをプルします。ただし、同じサブネットまたはファイアウォール内にない場合、Prometheus はターゲット データをプルできません。したがって、各ターゲットを使用してプッシュゲートウェイにデータをプッシュすることができ、その後、Prometheus はスケジュールに基づいてプッシュゲートウェイからデータをプルします。
- ビジネス データを監視する場合、さまざまなデータを集約する必要があります。集約されたデータは pushgateway によって収集され、その後 Prometheus によってプルされるため、Prometheus への負荷が軽減されます。
- コレクションインジケーターのカスタマイズは簡単です。
2. Pushgatewayの欠点:- Prometheus は pushgateway のステータスのみをプルし、すべてのノードに対して有効ではありません。
- Pushgateway に問題がある場合、収集されたデータ全体に問題が発生します。
- Pushgateway は、プッシュされたすべての監視データを保持できます。したがって、監視がオフラインの場合でも、Prometheus は古い監視データを取得するため、pushgateway に必要のないデータを手動でクリーンアップする必要があります。
- 公式ドキュメント: https://prometheus.io/docs/prometheus/
- Prometheus GitHub アドレス: https://github.com/prometheus/prometheus/
- Pushgateway GitHub アドレス: https://github.com/prometheus/pushgateway/
プロメテウスの全体紹介について 2. プッシュゲートウェイアーキテクチャ- Pushgateway はデータ転送ステーションです。データ プロデューサーがいつでもデータをプッシュできるように API を提供します。
- Pushgateway はエクスポーター機能を提供し、 Promethus サーバーがデータをプルするときに保存されたデータをPromethus サーバーにフィードバックします。
3. Prometheusサーバーのインストール Prometheus は Golang で記述されており、コンパイルされたソフトウェア パッケージはサードパーティの依存関係に依存しません。ユーザーは、対応するプラットフォームのバイナリ パッケージをダウンロードし、解凍して基本構成を追加するだけで、Prometheus サーバーを正常に起動できます。
1) ダウンロードダウンロードアドレス: https://prometheus.io/download/ https://github.com/prometheus/prometheus/releases/download/v2.40.6/prometheus-2.40.6.linux-amd64.tar.gz
tar - xf プロメテウス- 2.40 .6 .linux - amd64 .tar .gz 2) 構成解凍後、現在のディレクトリにはデフォルトの Prometheus 構成ファイルpromethes.ymlが含まれます。次の構成ファイルは簡単に解析されます。 # グローバル設定 グローバル: scrape_interval : 15 s # スクレイピング間隔を設定します。デフォルトは 1 分です。 evaluation_interval : 15秒 #ルールを推定するデフォルトの期間は、15 秒ごとにルールを評価することです。デフォルト 1分 # scrape_timeout #デフォルトのクロールタイムアウト、デフォルトは10秒
# Alertmanager関連の設定 警告: アラートマネージャー: -静的構成: -ターゲット: # -アラートマネージャー: 9093
# ルールファイルのリスト。取得には「evaluation_interval」パラメータを使用します ルールファイル: # - "first_rules.yml" # - "second_rules.yml"
# 設定リストを取得する scrape_configs :スクレイプ設定: -ジョブ名: 'プロメテウス' 静的構成: -ターゲット: [ 'localhost:9090' ] 3) サービスを開始する # ヘルプを表示 ./プロメテウス-h
# サービスを直接開始しますが、コンソールを終了するとサービスも終了するため、これはお勧めしません。起動時に nohup を追加することもできますが、あまり使いやすくありません。以下はprometheus.serverの起動を設定します # デフォルトのポートは 9090 です。デフォルトのポートを変更する必要がある場合は、 --web.listen-address=:9099 を使用できます。また、構成ファイル --config.file=prometheus.yml を指定することもできます。 ./プロメテウス prometheus.service起動スクリプトを構成する cat > /usr/lib/systemd/system/prometheus.service << EOF [ユニット] 説明者=プロメテウス 後=ネットワーク.ターゲット [サービス] タイプ=シンプル ExecStart =/ opt / prometheus / prometheus_server / prometheus - 2.40.6.linux - amd64 / prometheus --config.file=/opt/prometheus/prometheus_server/prometheus- 2.40.6.linux -amd64/prometheus.yml 再起動=オン-失敗 [インストール] WantedBy =マルチユーザー.target 終了 サービスを開始する # systemctl daemon - reload コマンドを実行して systemd をリロードします systemctlデーモン-reload # 起動する systemctl プロメテウスを起動する # 診る systemctl ステータス プロメテウス netstat - tnlp | grep : 9090 追伸- ef | grep プロメテウス ウェブアクセス: http://ip:9090 4. プッシュゲートウェイのインストール1) ダウンロードダウンロードアドレス: https://prometheus.io/download/#pushgateway https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gzをダウンロードしてください 2) サービスを開始する # ヘルプを表示 ./プッシュゲートウェイ -h
# サービスを開始します。ここでは直接起動は使用されません。 pushgateway.serviceの起動を構成する ./プッシュゲートウェイ デフォルトのリスニング ポートは9091です。これは次の設定で変更できます。 使用法: pushgateway [ <フラグ> ] フラグ: --web.listen-address=":9091" Web インターフェース、API、テレメトリのリッスン アドレス。 --web.telemetry-path="/metrics" メトリックを公開するパス。 --web.external-url= Pushgateway に外部からアクセスできる URL。 --web.route-prefix="" Web エンドポイントの内部ルートのプレフィックス。デフォルトは --web.external-url のパスになります。 --persistence.file="" メトリックを保存するためのアーカイブ。空の場合、メトリックはメモリ内にのみ保持されます。 --persistence.interval=5m 永続ファイルを書き込むための最小間隔。 --log.level="info" 指定された重大度以上のメッセージのみをログに記録します。有効なレベル: [debug、info、warn、error、fatal] --log.format="logger:stderr" ログの保存先と形式を設定します。例: "logger:syslog?appname=bob&local=7" または "logger:stdout?json=true" --version アプリケーションのバージョンを表示します。 pushgateway.service起動スクリプトを構成する cat > /usr/lib/systemd/system/pushgateway.service << EOF [ユニット] 説明notallow = Pushgetway 後=ネットワーク.ターゲット [サービス] タイプ=シンプル ExecStart =/ opt / prometheus / pushgateway / pushgateway - 1.5.1.linux - amd64 / pushgateway 再起動=オン-失敗 [インストール] WantedBy =マルチユーザー.target 終了 サービスを開始する # systemctl daemon - reload コマンドを実行して systemd をリロードします systemctlデーモン-reload # 起動する systemctl プッシュゲートウェイを起動する # 診る systemctl ステータス プッシュゲートウェイ netstat - tnlp | grep : 9091 追伸- ef | grep プッシュゲートウェイ Webアクセス: ip:9091/metrics 3) Prometheusに接続するPrometheus 構成ファイルを変更し、次のコンテンツを追加します。 -ジョブ名: 'pushgateway_name' scrape_interval : 30秒 honor_labels : true #この設定により、エクスポーターノードによってアップロードされたデータ内の一部のラベルは、プッシュゲートウェイノードの同じラベルによって上書きされなくなります。 静的構成: -ターゲット: [ "192.168.182.110:9091" ] ラベル: インスタンス: pushgateway_instance # pushgateway 内のデータは通常、ジョブとインスタンスごとにグループ化され分類されるため、これら 2 つのパラメータは不可欠です。 Prometheusサービスを再起動するか、ホットロードを実行します # curl - X POST http : // 192.168 .182 .110 : 9090 //-/リロード systemctl restatus プロメテウス 次に、Prometheus Webインターフェースを確認します: http://ip:9090/targets 5. 実操作デモンストレーション1) プッシュデータ定義- プッシュパスのURL部分は次のように定義されます。
/メトリクス/ジョブ/<ジョブ名> { /<ラベル名>/<ラベル値> } ジョブは必須パラメータであり、label_name 部分はオプションです。 URL 内のジョブとラベルの組み合わせにより、プッシュゲートウェイ内のグループが一意に識別されます。 - プッシュされたデータ部分では、形式は次のように定義されます。
## TYPE メトリック名 タイプ metric_name { label_name = "label_value" ,... }値 1) プッシュデータグループ定義 {job="some_job"} でデータをプッシュします 「some_metric 3.14」をエコーします| curl --data-binary @- http://192.168.182.110:9091/metrics/job/some_job グループ定義 {job="some_job",instance="some_instance"} でデータをプッシュします # --data-binary はバイナリデータを送信することを意味します。注: POST を使用して送信されます。 猫<< EOF | curl --data-binary @- http://192.168.182.110:9091/metrics/job/some_job/instance/some_instance # TYPE some_metric カウンター some_metric2 {ラベル= "val1" } 42 # TYPE another_metric ゲージ # HELP another_metric 単なる例です。 別のメトリック2398.283 終了 2) データを削除するグループ定義 {job="some_job"} の下にあるすべてのデータを削除します カール- すべてのグループのすべてのメトリックを削除します (pushgateway を起動するときにコマンドライン パラメータ--web.enable-admin-apiを追加する必要があります) カール- 例: - データはグループ単位で削除され、グループは URL 内のジョブ名とラベルによって一意に識別されます。
- この例では、データ {job="some_job"} を削除するステートメントは、データ {job="some_job",instance="some_instance"} を削除しません。彼らは異なるグループに属しているからです。 {job="some_job",instance="some_instance"} の下のデータを削除する必要がある場合は、これを使用する必要があります。
- ここでデータを削除するということは、pushgateway 内のデータを削除することを意味し、promethues とは関係ありません。
上記のデモ例は公式に提供されています: https://github.com/prometheus/pushgateway/ 3) プッシュゲートウェイコレクションを送信するためのスクリプトメソッドをカスタマイズするテンプレート 猫<< EOF | curl --data-binary @- http://192.168.182.110:9091/metrics/job/some_job/instance/some_instance # ヒストグラムは、テキスト形式ではかなり複雑に表現されます。 # HELP http_request_duration_seconds リクエスト継続時間のヒストグラム。 # TYPE http_request_duration_seconds ヒストグラム disk_usage {インスタンス= "local-168-182-110" 、ジョブ= "disk" 、ディスク名= "/run/user/0" } 11 ディスク使用量{インスタンス= "local-168-182-110" 、ジョブ= "disk" 、ディスク名= "/run/user/1" } 22 disk_usage {インスタンス= "local-168-182-110" 、ジョブ= "disk" 、ディスク名= "/run/user/2" } 33 ディスク使用量{インスタンス= "local-168-182-110" 、ジョブ= "disk" 、ディスク名= "/run/user/3" } 44 ディスク使用量{インスタンス= "local-168-182-110" 、ジョブ= "disk" 、ディスク名= "/run/user/4" } 55 終了 Pushgatewayにデータをプッシュするための収集スクリプトを書く cat > disk_usage_metris .sh << EOF # !/ bin / bash
ホスト名= `ホスト名- f |カット-d '.' - f1`
メトリック= "" `df |内の行に対してawk 'NR>1{$NF "=" int($(NF-1))} を印刷' ` する ディスク名= `echo $line | awk - F '=' '{print $1}' ` disk_usage = `echo $line | awk - F '=' '{print $2}' ` メトリック= "$metrics\ndisk_usage{instance=\"$hostname\",job=\"disk\",disk_name=\"$disk_name\"} $disk_usage" 終わり
echo - e "# テキスト形式で非常に複雑な表現を持つヒストグラム:\n# HELP http_request_duration_seconds リクエスト期間のヒストグラム。\n# TYPE http_request_duration_seconds histogram\n$metrics" | curl --data-binary @- http://192.168.182.110:9091/metrics/job/pushgateway/instance/disk_usage 終了 PushgetwayのWebを見る Prometheus ウェブを見る
|