prometheus基本概念用法記録
Prometheus の基本概念promethuesは、オープンソースのシステム監視アラームフレームワークです.Prometheusが収集したすべてのモニタリングデータは、内蔵された時系列データベースに指標(metric)として保存されます(TSDB):同じ指標名、同じラベルセットに属するタイムスタンプマークのあるデータストリームです.Prometheusは、格納された時間系列に加えて、クエリ要求に基づいて、戻り結果として一時的で派生した時間系列を生成することもできる.特徴: の強力な多くはデータモデル である.柔軟なクエリー言語 管理が容易 高効率 pullモードを用いて時系列データ を収集する.複数種類の可視化グラフィックインターフェース 伸縮性 prometheusの構成とアーキテクチャ: prometheus server:主にデータ収集と記憶を担当し、promQLクエリー言語のサポートを提供する.prometheusは、収集したモニタリングデータをローカルディスクに時間系列で格納するシーケンスデータベースです. Push Gateway:一時的なjobアクティブプッシュ指標をサポートする中間ゲートウェイ. PromDash:railsが開発したdashboardを使用して、指標データを可視化します. Exporters:マシンの動作状態を監視し、監視されるコンポーネント情報を提供するHTTPインタフェースをexporterと呼ぶ. 直接採集:exporterはprometheusサポートを内蔵し、prometheusにデータのエンドポイントを直接暴露します. 間接採集:prometheusはサポートされていません.prometheusが提供するclien libraryによって作成されたターゲットモニタリング採集プログラム.
Altermanager:Prometheus server側からalertsを受信すると、重複データを除去し、パケット化し、受信した受信方式にルーティングし、アラームを発行します.一般的な受信方法は、電子メール、pagerduty、OpsGenie、webhookなどです. WebUI:9090はグラフィックインターフェース機能を提供します.
基本動作原理 Prometheus serverは、定期的に構成されたjobsまたはexportersからmetricsを引いたり、Pushgatewayから送られてきたmetricsを受け取ったり、他のPrometheus serverからmetricsを引いたりします. Prometheus serverは収集したmetricsをローカルに格納し、定義したalertを実行する.rulesは、新しい時系列を記録したり、Alertmanagerにアラートを送信したりします. Alertmanagerは、プロファイルに従って受信したアラームを処理し、アラームを発行する. グラフィックインタフェースでは、収集データを可視化する.
基本概念:データモデル:prometheusに格納されているデータは時間系列であり、Metricの名前と一連のラベル(キー値ペア)によって一意に識別され、異なるラベルは異なる時間系列を表す.サンプル:float 64の値とミリ秒レベルのタイムスタンプを含む実際のタイムシーケンス.(指標+タイムスタンプ+サンプル値)metric名前:意味があり、表示機能:たとえばhttp_requestststotalは、httpリクエストの合計数を表します.ここで、metric名はASCII文字、数字、下線、およびコロンで構成され、正規表現[a-zA-Z:][a-zA-Z 0-9_:]*を満たす必要があります.≪ラベル|Label|emdw≫:時間系列に異なる未読の識別を付けます.例えばhttp_requestststotal{method="Get"}は、すべてのhttpリクエストのGetリクエストを表します.method=「post」の場合、新しいmetricになります.ラベル内のキーは、ASCII文字、数値、および下線で構成され、正規表現[a-zA-Z:][a-zA-Z 0-9_:]*を満たす必要があります.フォーマット:{=,...}、たとえばhttp_requests_total{method="POST",endpoint="/api/tracks"}. Metricタイプcounter:累積metirc.Gauge:増減可能metric Histogram:ツリー図summary:要約 PromQLクエリー データ型 時系列フィルタ オペレータ 重合動作 タスクとインスタンスは異なるモニタリング指標を収集し、対応するモニタリング収集プログラムを実行し、prometheus serverにこれらのexportインスタンスのアクセスアドレスを知らせる必要があります.各モニタリングサンプルのhttpサービスは、インスタンスと呼ばれる.Node exporterはインスタンスと呼ぶことができます.同じ収集目的で使用されるインスタンスのセット、または1つの収集プロセスの複数のコピーは、1つのタスクで管理されます. HTTP APIにおける応答フォーマット Prometheusアラート アラーム規則定義(Alertrule difinition)アラーム名:カスタム名.アラームルール:PromQL式に基づいてアラームトリガ条件を定義する.プロファイルに定義する Altermanager特性 インストール起動Altermanger altermanager.ymlプロファイル紹介 prometheus を再起動
prometheusインストール prometheus server をインストール Node Exporterをインストールホスト実行データ(cpu、メモリ、ディスクなどのホスト実行指標などの情報を収集) . Prometheusに収集した監視データを追加し、prometheusを修正する.ymlファイル、scrape_configsは内容を追加します. Grafanaを使用して可視化Dashboard を作成
先に記録し,後で補充する.
参考記事は以下の通りです.
prometheus非公式マニュアル
prometheus-book
(instant vector): , 。
(range vector): , 。
(scalar): 。
(string): 。
:
eg: http_requests_total , {} 。
:
= : 。
!= : 。
=~ : ( ) 。
!~ : ( ) 。
:
eg:http_requests_total{job="prometheus"}[5m], [] 。
:
s -
m -
h -
d -
w -
y -
:
, .
eg:http_requests_total offset 5m "offset ({}) "
eg:
:
eg:= ,!= ,< , > ,<= ,>=
:
and,or,unless
:([parameter,] ) [without|by (
* job: node
* instance 2: 1.2.3.4:9100
* instance 4: 5.6.7.8:9100
:
url :
eg:'http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'
query=:PromQL 。
time=: PromQL 。 , 。
timeout=: 。 , -query,timeout
:
url :
eg:'http://localhost:9090/api/v1/query_range?query=up&start=2015-07-01T20:10:30.781Z&end=2015-07-01T20:11:00.781Z&step=15s'
query=: PromQL 。
start=: 。
end=: 。
step=: 。
timeout=: 。 , -query,timeout 。
groups:
- name: example
rules:
- alert: HighErrorRate
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: High request latency
description: description info
#group:
#alert:
#expr: PromQL
#for
#label
#annotation: Alertmanger
:
: ,
:
wget https://github.com/prometheus/alertmanager/releases/download/v0.15.3/alertmanager-0.15.3.linux-amd64.tar.gz
cd alertmanager-0.15.3.linux-amd64/
./alertmanager
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
(route) (receivers)。 (route) , 。
(global): , SMTP ,Slack ;
(templates): , HTML , ;
(route): , ;
(receivers): , ,Slack Webhook , ;
(inhibit_rules):
killall -9 prometheus
nohup prometheus &
wget https://github.com/prometheus/prometheus/releases/download/v2.6.0/prometheus-2.6.0.linux-amd64.tar.gz
tar -zxvf prometheus-2.6.0.linux-amd64.tar.gz
cd prometheus-2.6.0.linux-amd64
./prometheus &
ln -s /root/prometheus/prometheus-2.6.0.linux-amd64/prometheus /usr/local/bin/prometheus
cat >> /usr/lib/systemd/system/multi-user.target.wants/prometheus.service <
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar -zxvf node_exporter-0.17.0.linux-amd64.tar.gz
cd node_exporter-0.17.0.linux-amd64/
mv node_exporter /usr/local/bin/
nohup node_exporter &
curl -l -H "Content-type: application/json" -X POST -d '{"msgtype": "markdown","markdown": {"title":"Prometheus ","text": "####
>
> ######
"},"at": {"isAtAll": false}}' https://oapi.dingtalk.com/robot/send?access_token=51345145d106753486bd71614bf881283f91e2124535276b257f99327e41dc87
{"errcode":0,"errmsg":"ok"}
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# node exporter
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
docker run -d -p 3000:3000 grafana/grafana
# http://localhost:3000 admin admin
先に記録し,後で補充する.
参考記事は以下の通りです.
prometheus非公式マニュアル
prometheus-book