プロメテウスについて
プロメテウスは、オープン&SoundCloudが開発開始することにより、時系列&データベースを監視警報の組み合わせです。発展に伴い、ますます多くの企業や組織は、プロメテウスの使用を受け入れるために、コミュニティは、彼らが別のオープンソースプロジェクトに入れて、また非常にアクティブで、企業が動作する必要があります。また、彼らと一緒に本の中で言及したGoogleのSREは、システムと同様の実装がプロメテウスある監視BorgMon。今、最も一般的なKubernetesコンテナ管理システム、通常プロメテウスモニター付き。
1)プロメテウスの特徴
強力なデータモデルは、プロメテウス監視データは、に格納されたメトリックの形で収集される内蔵単一のバイナリファイルのプロメテウスのコアは、それほどないサードパーティ信頼の強力なクエリ言語がないため、管理データベースTSDBそれらのタイミング、プロメテウスは、データをローカルに保存することができプロメテウスは、あなたも、リモートストレージを使用することができ、また、サードパーティ製を使用することができるだけでなく、データのクエリと集約高い可用性と拡張性を監視するために達成することができ、強力なデータクエリ言語PromQLを、構築されましたツールプラスその連邦クラスタは、高可用性 ``可視化プラットフォームを実現するために、プロメテウスは、プロメテウスのためのUIが、より原始的な、しかしGrafana自然なサポートが付属して、完璧な組み合わせは、あなたがより魅力的データモニタのアイコンを作成することができます。
2)プロメテウスのデータ収集
プルモード:このモードでは、プルの形、クライアントの輸出をインストールしておく必要があります、モードで動作しているデーモンの輸出業者である、そしてそれはhttpリクエストに行うことができるため、別のHTTPサーバとして各プログラムのデータ輸出の収集を開始しますデータ応答メトリック(K / Vデータ)を返すプロメテウス・サーバアクセスする各ノード上の輸出及びプルの形で収集され、デフォルトモードで、必要。
プッシュモード:このモードでは、プッシュモードを使用するためのプッシュの形態である、あなたは、サーバーまたはクライアントとサーバー間pushgatewayに位置しているプロキシが、第一の指標を受けて、我々は理解することができるクライアントにプラグインpushgatewayのpushgatewayをインストールする必要がありますその後、pushgatewayここでクライアントをインストールする必要はありません、また、サーバあるいは他のノードにインストールすることができ、pushgatewayのプロメテウス・サーバーにプッシュ。
仕様タイプ3)プロメテウスの
インデックス英語メトリックと呼ばれるメトリックのセットは、指標の種類は多様であるので、K / Vデータ、メトリックは、データ収集のための一般的な用語上ではなく、特定の値または指標として理解することができるが、であり、実際のプロメテウスに-server単にこれらの指標は、非時系列の種類とみなされているに言えば、この時点で、我々はメトリックのどのような種類の指標を見て、 ``指標のタイプを区別しません。
1.Counter(カウンタ):監視システムリセットは、我々は、サーバーを表すための指標のこのタイプを使用することができる発生しない限り、データが単調増加インデックスのサンプルを表す0累積ベースから、だけで、上昇しますエラーの合計数の合計数が発生した要求の数は、この時間は、他のタイプを使用する必要があり、そのようなシステムを現在実行中のプロセス数などの非単調に増加するサンプルデータの指標、それを適用しない、使用カウンタータイプの時点で完了しています。
2.Gauge(ダッシュボード):それは収集したデータは瞬時に行われ、時間が問題で、このタイプのデータは、あること、それは必ずしも成長していきません変更することができる指標のサンプルを示していないが、必ずしも減少に続行されませんそれはルールを変更しない、我々は、ハードディスク容量の使用状況とメモリ使用量を収集するメトリックのこのタイプを使用することができ、また、このような同時リクエスト数などの任意の時点で合計増減を表すことができます。
3.Histogram(ヒストグラム):時間の結果と統計上ヒストグラムデータの取得を表すために使用される間隔、通常、例えば、ヒストグラム位数を計算するために使用される合計数、要求の継続時間を指定することができ、または応答の大きさ。
4.Summary(要約):ヒストグラムの種類と、それがデータ収集の結果と類似している時間の期間であるが、それは直接分位の間隔で計算されていない記憶されています
プロメテウスの利点
:また利点プロメテウスもある
1効率的に単一プロメテウスは、インデックスを監視する数百万を扱うことができ、データは、毎秒点の数十万の処理します。
2.簡単なストレッチ:プロメテウスの連邦クラスター(フェデレーション)が論理クラスタを形成するために、機能領域(共有)+、を使用して拡張することができ、プロメテウスは、多言語クライアントSDKを提供しています、SDKには、迅速プロメテウスのアプリケーションに統合することができますそれらを監視。
3.グッド可視化:プロメテウスの追加がプロメテウスUI、プロメテウスが付属しても、ダッシュボードのRubyでRailsのプログラムPromdashベースの独立したソリューションを提供しています。また、最新のGrafana可視化ツールは、完全なProetheusサポートを提供し、APIベースのプロメテウスは、独自の監視可視化UIを実装することができます提供しました。
4.モニタリングもっと多様性 **:サポート複数の言語は、そのような注文など、お客様の便利な埋葬コアビジネスで、ショッピング・カートや他のプロセスを追加することプロメテウスクライアント。
そして、プロメテウスは、システム統合をたくさん持っています。
例:アプリケーション・レベルが監視:nginxの、haproxyは、MySQL、ドッカーなど、
システム・レベル、例えば:SNMPプロトコル監視、ホスト監視、監視プロセス、
容器クラウドモニタリング:ドッカーをK8SプライベートクラウドOpenStackの。
非常に効率的なメモリ:サンプリングされたデータは、〜3.5の平均バイトのために60日、228G程度のディスクの消費のために、30秒ごとにサンプリングされた時系列320万ドルを計上しました。
プロメテウスアーキテクチャ
この図は、生態系プロメテウスとその構成要素のいくつかのアーキテクチャを示しています。
図の各部分の制御が導入されました:
-
サーバー1.prometheus:時系列データを収集し、保存するため。
-
2.Retrieval:サンプリングモジュール、データを分散ファイルシステムの引っ張らTSDB取得され引き上げプロメテウスサーバ;
のTSDB:ストレージ・モジュールは、デフォルトのローカルTSDB格納する、
HTTP Serverは:httpおよびインタフェースクエリパネル、デフォルトのポートを提供9090; -
ディスカバリー3.Service:
サービス検出、プロメテウスのサポート複数のサービスディスカバリメカニズム:ファイル、DNS、K8S、OpenStackの、などは、サービス検出プロセスに基づいて、サードパーティのインタフェースを介して、ターゲットニーズのリストにプロメテウスクエリが監視される、これらの世論調査データを監視対象の取得; -
4.クライアントSDKの
クライアントライブラリの公式そこに行く、のJava、Pythonの、ルビー。 -
ジョブズ寿命5.short:
そこ短いのための十分な時間がない場合、またはボリュームの事業を削除し、プルモードを引っ張って、あなたはプッシュの方法を使用する必要はありません、pushgetewayと組み合わせて使用。 -
6.proDashの
使用ダッシュボードには、インデックスデータを視覚化するために開発されたレール。 -
7.Exporters:プロメテウスに既存のサードパーティのサービスメトリックを露出させます。
-
8.Alertmanager:プロメテウスサーバーがアラートから受け取る、除去は、データ・パケット、およびルート受け取った受け入れの実施形態では、アラームを複製します。一般的な受信方法は次のとおりである:電子メール、pagerduty、OpsGenie、ウェブフックと。
-
ゲートウェイ9.PUSH:主に短期の仕事のために使用。そのため、このようなジョブの存在を短時間で、おそらくプロメテウス前に姿を消し引き出します。このため、ジョブはプロメテウスサーバ側に直接そのメトリックをプッシュすることができます。
-
10.prometheus_cli:コマンドラインツール。
プロメテウスのワークフロー
-
仕事や輸出業者から定期的に構成されたプロメテウスサーバーは、メトリクスを引く。メトリクスまたはpushgatewayのて送信から受け入れる、または他のプロメテウスサーバーからプルメトリクス
-
収集メトリック、および実行すでに定義arlt.rulesにローカルストレージ内プロメテウスサーバー、新しい時系列を記録したり、アラームのAlertManagerをプッシュします
-
プロファイルに基づいて、アラーム処理の受け入れ、アラームのAlertManager
-
グラフィカルなインターフェイス、視覚化、データ収集では、あなたが他の誰か書かgrafanaテンプレートを使用することができます。
プロメテウスのインストールと展開
ダウンロードします。https://github.com/prometheus/prometheus/releases/
[root@ chenc01 ~]# tar xf prometheus-2.16.0.linux-amd64.tar.gz
[root@ chenc01 ~]# mv prometheus-2.16.0.linux-amd64 /usr/local/prometheus
[root@ chenc01 ~]# cd /usr/local/prometheus/
[root@ chenc01 prometheus]# pwd
/usr/local/prometheus
[root@ chenc01 prometheus]# ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool tsdb
[root@ chenc01 prometheus]# ./prometheus --version
prometheus, version 2.16.0 (branch: HEAD, revision: b90be6f32a33c03163d700e1452b54454ddce0ec)
build user: root@7ea0ae865f12
build date: 20200213-23:50:02
go version: go1.13.8
# 后台启动普罗米修斯
[root@ chenc01 prometheus]# ./prometheus &
[1] 1920
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
プロメテウスの使用
1、アクセスプロメテウス
背景経由でHTTPをご覧ください:// IP:9090
2、ステータスを表示します
3、設定を確認してください
図4に示すように、実行中の情報を表示します
Grafanaプロフィール
Grafanaは囲碁言語が開発したオープンソースのデータ可視化ツールである、あなたは、アラーム機能で、監視データと統計を行うことができます。現在では多くの企業が、このようなペイパル、イーベイ、インテルなどとして、grafanaを使用するがあります。
あなたがGrafana、Grafanaのいくつかの基本的な観点で見てみましょうを展開し、使用する前にGrafanaも、Elasticsearch、InfluxDB、MySQLの、OpenTSDBを含むさまざまなデータソースをサポートしています。
1)基本的な用語のGrafana
1.DataSource(データソース):上記において、我々は話を、Grafanaはプロメテウスを含むがこれらに限定されない、さまざまなデータソースをサポートし、データソースは、プロメテウスなどのZabbixなどのデータオブジェクトを、提供するという点で人気があります
2.Dashboard(ダッシュボード):ページがレンダリングされ、我々はデータソースに対応する優れたを追加した場合、ダッシュボードは、Grafanaにデータを視覚化することが必要で、この時間は、ダッシュボードでデータの可視化グラフを整理し、管理することが可能です。
3.Row(OK) :行が構成単位ダッシュボードであり、それは行ダッシュボードの複数を含み、そして今度は、このような負荷状態、メモリ使用率、ディスク使用率などの1つまたは複数の情報の組み合わせを示すことができるラインできます。
4.Panel(パネル):パネルは、本情報行する方法として解釈することができ、それはテーブル(テーブル)をサポートし、リスト(アラートリスト)、熱(ヒートマップ)チャート、Grafanaに、すべてのパネルは、プラグインの形態であります使用しています。
5.Queryエディタ(クエリエディタ):質問器の役割は、これはSQL文に似ていたデータ収集の一部を指定することですが、私たちが実際に使用されプロメテウスのためのデータソースを追加する場合はPromQLです。
6.User(ユーザー):ユーザーとGrafanaは、それぞれ3つの役割、管理者、編集者、閲覧者が含まれている私たちは通常、同様にユーザのログインシステムの概念は、読み取り専用のエディタでは、管理者の最高権威を、それがどのように実行することができます、エディタは唯一のビューアは、あなたがダッシュボードを変更ではなく、保存することができます唯一のエディタを読んで、ダッシュボードを表示することができ、ダッシュボードを作成することができます。
7.Organization(組織):でGrafanaそれら、組織に属しダッシュボードとのDataSourceは、各ユーザはユーザごとに異なる権限を与えることができ、異なる組織で、いくつかの異なる組織を持つことができます知っている必要がありますが、異なっています組織のデータソースとダッシュボードの間Grafanaは、新しいビューを開くのと同等で、この時間は、すべてのデータソースとダッシュボードやその他のコンテンツを追加し、設定するために行くの再すべきで組織を作成するたびに、異なっています
Grafanaインストールと展開
1)ダウンロードしてインストールソフトウェアがGrafanaをパッケージ化
最初の着陸grafana公式サイト、rpmパッケージをダウンロードするバージョンを選択し、ダウンロードリンクです:ダウンロードパスにGrafana公式サイト
`[root@prometheus ~]# wget -c https:``//dl.grafana.com/oss/release/grafana-6.6.2-1.x86_64.rpm``[root@prometheus ~]# yum -y install /root/grafana-6.6.2-1.x86_64.rpm`
2)身近Grafanaプロファイル
Grafanaデフォルトの設定ファイル:/etc/grafana/grafana.ini、その設定項目は700本の以上のラインを持っている、デフォルトのほとんど、いくつかの一般的な設定項目で見てみましょう
[root@ chenc01 ~]# vim /etc/grafana/grafana.ini
[paths]
# 定义数据存储路径,用来存储sqlite3,临时文件
data = /var/lib/grafana
# 在data目录中的临时数据要存储多久,默认为24h,也可以
temp_data_lifetime = 24h
# 定义日志存储路径
logs = /var/log/grafana
# 定义插件存储目录
plugins = /var/lib/grafana/plugins
[server]
# 定义访问的协议,默认为http
protocol = http
# 定义监听的IP地址,默认为所有
http_addr = 10.2.3.11
# 定义监听的端口,默认为3000
http_port = 3000
# 定义在浏览器中访问Grafana的全路径,默认即可,也可以写成http://ip:port
root_url = %(protocol)s://%(domain)s:%(http_port)s/
# 是否记录web请求日志,默认为关闭
router_logging = false
# 前端静态文件的存储路径,默认为/usr/share/grafana/public目录
static_root_path = public
# 选择数据库类型,默认为sqlite3,也可以选择MySQL
[database]
type = sqlite3
# 定义连接地址与端口
host = 127.0.0.1:3306
# 定义数据库名称
name = grafana
# 定义连接用户
user = root
# 定义连接密码
password = 123
# 关闭SSL
ssl_mode = disable
# 这里只是sqlite3需要,定义sqlite3的数据存储路径,默认为/var/lib/grafana目录
path = grafana.db
[users]
# 是否允许普通用户登录,默认为允许
allow_sign_up = true
# 是否允许普通用户创建组织,默认为允许
allow_org_create = true
# 如果为true,则自动把新增的用户增加到id为1的组织中,如果为false,则新建用户的时候会新增一个组织 ,默认为true
auto_assign_org = true
# 默认的背景页面,也可以选择light
default_theme = dark
3)Grafanaプロファイルの定義
[root@ chenc01 ~]# cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.bak
[root@ chenc01 ~]# vim /etc/grafana/grafana.ini
[paths]
data = /var/lib/grafana
temp_data_lifetime = 24h
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = conf/provisioning
[server]
protocol = http
http_addr = 10.2.3.11
http_port = 3000
root_url = %(protocol)s://%(domain)s:%(http_port)s/
serve_from_sub_path = false
router_logging = false
static_root_path = public
enable_gzip = true
[users]
allow_sign_up = true
allow_org_create = true
auto_assign_org = true
default_theme = dark
4)スタートGrafanaとカイからブートするように設定
[root@ chenc01 ~]# systemctl enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@ chenc01 ~]# systemctl start grafana-server
level=info ts=2020-03-28T06:28:07.583Z caller=compact.go:496 component=tsdb msg="write block" mint=1585366069255 maxt=1585368000000 ulid=01E4FX6YNHTQPYGTEKNJ9TCH2E duration=3.110826386s
level=info ts=2020-03-28T06:28:07.682Z caller=head.go:661 component=tsdb msg="head GC completed" duration=72.63582ms
[root@ chenc01 ~]# systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-03-28 14:28:09 CST; 4s ago
Docs: http://docs.grafana.org
Main PID: 17041 (grafana-server)
CGroup: /system.slice/grafana-server.service
└─17041 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/...
Mar 28 14:28:08 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:08+0800 lvl=..."
Mar 28 14:28:08 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:08+0800 lvl=..."
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:08+0800 lvl=..."
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:08+0800 lvl=...s
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:09+0800 lvl=...s
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:09+0800 lvl=...e
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:09+0800 lvl=...p
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:09+0800 lvl=..."
Mar 28 14:28:09 localhost.localdomain grafana-server[17041]: t=2020-03-28T14:28:09+0800 lvl=...=
Mar 28 14:28:09 localhost.localdomain systemd[1]: Started Grafana instance.
Hint: Some lines were ellipsized, use -l to show in full.
Grafana 使用
1)アクセスGrafana
ヒント:管理者にアクセスするためのユーザー名とパスワード、そして初めてのパスワードを変更するには、ログインするよう要求されます
2)Grafana基本構成
1)データソースを追加
ヒント:プロメテウスは、あなたがのZabbixのデータソースを選択した場合、あなたはプラグインをインストールする必要があり、データソースとしてここで選択しました
2)クエリのダッシュボード
ヒント:ここでは公式サイトを入力して、あなたが直接、IDをコピーすることができ、もちろん、あなたがダウンロードすることができ、その後、JSONはGrafanaをファイルアップロード
3)ダッシュボードを追加します。
ヒント:[追加]を選択した後、単にコピーして、IDを自動的に認識できるに貼り付けます