「クラウドネイティブ」Prometheus Pushgetwayの解説と実践的な操作

「クラウドネイティブ」Prometheus Pushgetwayの解説と実践的な操作

1. 概要

PushgatewayPrometheusのコンポーネントです。デフォルトでは、 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を追加する必要があります)

カール-

例:

  1. データはグループ単位で削除され、グループは URL 内のジョブ名とラベルによって一意に識別されます。
  2. この例では、データ {job="some_job"} を削除するステートメントは、データ {job="some_job",instance="some_instance"} を削除しません。彼らは異なるグループに属しているからです。 {job="some_job",instance="some_instance"} の下のデータを削除する必要がある場合は、これを使用する必要があります。
  3. ここでデータを削除するということは、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 ウェブを見る



<<:  クラウドネイティブ時代を1万語で解説、K8sコンテナプラットフォームのLB(Nginx)負荷分散システムを0から1に構築する方法

>>:  ナスダック、米国初のオプション市場のアマゾン ウェブ サービスへの移行を完了

推薦する

製造業におけるクラウド コンピューティング: 不可能から不可欠へ

[[429121]]ほとんどの製造業者は、「スマート ファクトリー」、「未来の工場」、「デジタル フ...

JVMの構造を理解して、面接で自慢できるようにしましょう

[[286442]] JVM には、基本型と参照型の 2 種類のデータ型が含まれています。基本的な型...

ウェブサイトが降格された場合はどうすればよいですか?まず4段階の戦略分析を実施してください

ウェブサイトの降格問題に遭遇すると、多くの人がまず百度を思い浮かべ、他人を責め、百度が現状を回復する...

ハイブリッドクラウドを導入することで、企業がデジタルトランスフォーメーションの失敗から身を守る方法

[[228673]]ファストフードチェーンの閉店であろうと、有名な小売店の倒産であろうと、人々はそれ...

タオバオプロモーションのための4つのチャネルと5つのツール

4つの主要チャネル:Taobao公式アクティビティ、Taobaoエキスパート、Taobaoメディア、...

HP、OpenStackオープンソースクラウドアーキテクチャのサポートを発表

海外メディアの報道によると、HPは今週、OpenStackオープンソースクラウドインフラストラクチャ...

ウェブサイトユーザーの粘着性

ユーザーの粘着性はよく話題に上がるトピックですが、この最も一般的なトピックは、長年の経験を持つ SE...

ウェブサイトのランキングを最適化する際に習得すべきヒント

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...

#BlackFriday# servarica、安価な大容量ハードドライブ VPS: 年間 29 ドル、2G メモリ/2 コア/1T ハードドライブ/無制限トラフィック

servarica は、10 年以上運営されており、ネイティブ IP を持つカナダの VPS ブラン...

「指先」から「クラウド」へ:テンセントがテクノロジー慈善デジタルツールボックスを発表、慈善団体は無料で申請可能

福祉のデジタル化は2.0時代に入り、「指先」から「クラウド」へと移行しつつあります。テンセントは、2...

映画コレクションステーションの運用アイデアとよくある問題点

今日は何もすることがないので、映画コレクションステーションの運用アイデアについてお話ししましょう。私...

ローカルビジネスがローカルSEOサービスから得られるメリット

今日の企業は、製品マーケティングにおいて、もはや従来のメディア宣伝だけに頼っていません。インターネッ...

電子メールを活用して e コマース サイトの飛躍を促進 (パート 1)

ウェブサイトのマーケティングとプロモーションのさまざまな方法の中で、電子メールによるプロモーションは...

Pinterestの成功の秘訣:質の高い女性ユーザーを多数獲得

はじめに: わずか 3 年前に設立された Pinterest は、最近 2 億ドルの新たな資金調達ラ...

広告やマーケティングを行うときはあまり合理的になりすぎない

月給5,000~50,000のこれらのプロジェクトはあなたの将来です私たちの日常生活において、一見合...