プロメテウス(プロメテウス)はSoundCloudが開発開始することにより、オープン&アラーム監視時系列&データベースを組み合わせたものです。発展に伴い、ますます多くの企業や組織は、プロメテウスの使用を受け入れるために、社会も非常に有効である、彼らは別のオープンソースプロジェクトに入れて、そして企業が動作する必要があります。GoogleのSREにも同様の実装がプロメテウスある監視システムBorgMon彼らと本の中で言及しました。今通常プロメテウスで最も一般的なKubernetesコンテナ管理システムは、監視します。
基本原理は、定期的に監視コンポーネントプロメテウスHTTPプロトコルクロール状態である任意の成分があれば、HTTPインタフェースは、制御システム、または任意の他のSDK統合プロセスなしにアクセスできるようにするという利点を有します。そうすることで、このようなVMやドッカーとして仮想化環境に最適です。
プロメテウスは、いくつかの適切なドッカー、Mesos、監視システムKubernetes環境のいずれかでなければなりません。
出力は、輸出国と呼ばれるコンポーネント情報のHTTPインターフェースを監視しました。現時点では最も一般的に使用される部品が輸出されているインターネット企業は、このような特定のサポート源が見るワニス、Haproxy、nginxのは、MySQL、(ディスク、メモリ、CPU、ネットワークなどを含む)のLinuxシステム情報として、直接使用することができます。https:// github.com/prometheus。
他の監視システムと比較すると、プロメテウス主な機能は次のとおりです。
多次元データ・モデル(セット主要な指標定義された名前および/メジアン径によって時系列)。
非常に効率的なストレージ、サンプル平均データは60日、228G程度のディスクの消費のために〜3.5bytes、サンプリングされた30秒ごとの3,200,000時系列を、占めました。
柔軟なクエリ言語。
分散ストレージ、単一のサーバノードに依存していません。
HTTPによって設定されたモデルの時間を引きます。
サポートは、中間ゲートウェイを介してプッシュ。
ターゲットを見つけるために、静的な構成やサービスディスカバリによる。
マルチモードのグラフィックとダッシュボードをサポート。
二、プロメテウスアーキテクチャの概要
図は、プロメテウス(プロメテウス)とそのエコシステムコンポーネントのいくつかの全体的なアーキテクチャを示します。
プロメテウスデーモンがアウェーゴールのタイミングクロールメトリクス(指標)のデータに責任があるとして、そのサービスのプロセスがあり、目標は、それぞれがその通常のクロールにHTTPサービス・インターフェースをつかむ公開する必要があります。
プロメテウス:などの設定ファイル、テキストファイル、飼育係、領事、DNS SRVルックアップ、を通じてサポートは、クロール対象を指定しました。サポート多くの方法は、このような非常に細かいGrafanaとして可視化し、チャート、Promdashが来るだけでなく、その上、独自のテンプレートエンジンとを提供するだけでなく、HTTP APIのクエリを提供し、必要な出力をカスタマイズします。
AlertManager:プロメテウスは、非常に柔軟なアラームモードを提供し、プロメテウスのクエリをサポートすることができるコンポーネントとは無関係です。
PushGateway:このコンポーネントは、アクティブなプッシュPushGatewayクライアントのメトリックをサポートすることですが、タイミングは、ゲートウェイ上のデータプロメテウスをフェッチします。
ユーザーが使用している場合statsdが、これは非常に似ていると思いますが、statsdをクロールするためのイニシアチブのプロセスによって主にサーバーに直接送信し、プロメテウスされます。
ほとんどのプロメテウスコンポーネントは、彼らが簡単に静的なバイナリをビルドして展開することができ、移動中に書かれています。完全なドキュメント、例、およびガイドラインのアクセスprometheus.io。
三、プロメテウスのデータモデル
プロメテウスは、基本的にすべての異なるラベルが異なる時系列を表し、時系列からなる同じ指標(メトリック名)とラベル(又は複数のタグ)を達成するために時系列に格納されます。いくつかのクエリをサポートし、時にはいくつかの一時的な時系列のストレージを生成するために。
メトリック名&ラベル名とラベルの指標
各時系列は唯一の「インデックス名」および組成物の形での「タグ(キー=値)」のセットです。
インデックス名:一般的にはhttp_requests_total例えば、名前から画像を監視することであるので、それはいくつかの命名規則を持っている、あなたは次のように_英数字パックすることができます。通常、アプリケーション名などの_ _数値型のモニタリング_そのようなユニットで始まります。たとえば、次のようにpush_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。
タグ:そのエンドポイントが何であるかを、時系列の異なる寸法を特定し、例えば、POSTを使用してHTTPリクエストまたはGETすることで、我々はラベルで行く必要があります。この時間は、マーク。http_requests_total {METHOD = "POST"、終点= "/ API /トラック"}:そのような識別は、最終的に形成されています。
http_requests_totalのために、メトリック名のタグのいずれかの増加を覚えたり、新しい時系列を形成することになるタグを削除します。
クエリに応じて重合の結果を照会するために、上記標識と組み合わせることができます。
データベースは、この文の伝統的な見解を理解する場合は、http_requests_totalはテーブル名で検討し、タグがフィールドであり、タイムスタンプは、主キーである、のfloat64フィールドはそれだけの価値があるがあります。(すべての値は、ストレージのfloat64によるものであるプロメテウス)。
四、プロメテウス4つのデータタイプ
カウンタ
例えば積分値、回数、完了したタスクの数、エラー数を記録するための要求のためのカウンター。それは減少し、ない増加しました。再起動処理の後、それがリセットされます。
例如:http_response_total {メソッド=」GET」、終点=」/ API /トラック」} 100,10秒后抓取http_response_total 100 {方法は=、終点=」/ API /トラック」」GET」}。
ゲージ
このような温度変化、メモリ使用量の変化のような従来の値を、ゲージ。ビッグ変数、変数小さな。再起動処理の後、それがリセットされます。
例えば:memory_usage_bytes {ホスト= "マスター-01"}×100 <把持値、memory_usage_bytes {ホスト= "マスター-01"} 30、memory_usage_bytes {ホスト= "マスター-01"} 50、memory_usage_bytes {ホストは=「マスター01 「} 80 <把持値。
ヒストグラム
時間のかかる要求、応答サイズ:ヒストグラム(ヒストグラム)は、のようなイベントを追跡するための一般的に使用されるスケールヒストグラムを意味するものと理解することができます。機能の数と、すべての値の合計を提供し、コンテンツを記録グループに非常に特別です。
例えば:{10未満= 5、1 = 20未満、30未満= 2} = 7倍= 7回、合計値SUMを数えます。
概要
時間のかかる要求、応答サイズ:概要およびヒストグラムのような追跡イベント、のために非常に類似し、一般的に使用されるスケールです。また、機能をカウントし、すべての値の合計を提供。
たとえば:= 7回、評価の合計= 7倍の値をカウントします。
それはあなたが除算追跡%以上の結果を押すことができ、クォン機能を提供します。たとえば、次のサンプル値を表し、0.95分位値は、データの95%を取ります。
第五に、インストールと操作プロメテウス(ドッカ版)
ここでは、このマシンGrafanaプロメテウスとサーバーのパフォーマンス監視を使用する方法です。
マシンの監視、唯一の輸出、node_exporter - マシンのデータ収集システム
Grafanaは、一般的に時系列データを視覚化するために使用され、豊富な機能を備えたオープンソースのデータ可視化プラットフォームです。これは、次のデータソースをサポートして構築されました:
ここではインストール時に私たちが使用するアーキテクチャ図です。
注意:本文使用的是ubuntu-18 桌面系统,只需要一台服务器即可!
下载镜像包
apt-get install -y docker.io #安装docker
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
启动node-exporter
docker run --name node-exporter --restart=always -d -p 9100:9100 -v /root/docker/prom/proc:/host/proc:ro -v /root/docker/prom/sys:/host/sys:ro -v /root/docker/prom/rootfs/:/rootfs:ro prom/node-exporter
访问url:http://192.168.100.3:9100/metrics 效果如下:
这些都是收集到数据,有了它就可以做数据展示了
启动prometheus
新建目录/root/docker/prometheus,编辑配置文件prometheus.yml( vim prometheus.yml) 内容如下:
global: scrape_interval: 60s evaluation_interval: 60s scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090'] labels: instance: prometheus - job_name: linux static_configs: - targets: ['192.168.100.3:9100'] labels: instance: localhost
注意:修改IP地址,这里的192.168.91.132就是本机地址
启动prometheus
docker run --name prometheus --restart=always -d -p 9200:9090 -v /root/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
访问url:http://192.168.100.3:9200/graph
效果如下:
访问targets,url如下:http://192.168.100.3:9200/targets效果如下:
如果状态没有UP起来,等待一会,就会UP了
启动grafana
启动grafana
docker run -d --restart=always -p 3000:3000 -v /root/docker/grafana:/var/lib/grafana --name grafana grafana/grafana
备注 :chmod 777 -R /root/docker/grafana 因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!
grafana 可以参考 https://www.cnblogs.com/majiang/p/11206863.html
访问url:http://192.168.91.132:3000/
点击Add data source,
name名字写Prometheus
url 输入Prometheus的ip+端口
点击下面的Save & Test,如果出现绿色的,说明ok了
.回到首页,点击New dashboard.点击 Graph;输入cpu,底部会有提示
这里监控 node_load15,表示系统15分钟的负载。点击下面的Add Query;添加总内存
保存后效果如图: