1
0

More than 3 years have passed since last update.

[Prometheus] PromQLを扱う前に知っておいたほうがよい超最低限の知識

Last updated at Posted at 2021-06-09

目次

概要

PrometheusでPromQLを書く前に、最低限理解しておいたほうがよい用語や知識など。

関連記事

PrometheusとNode ExporterでCPUとメモリとディスクを監視する

Instant vector

時系列データ。

Range vector

現在から過去のある期間におけるInstant vectorの値が集まったデータ。
以下のように[1m]などで指定したデータ。[5m]とすれば5分前までのデータとなる。
その他以下の単位が指定可能。

  • ms - milliseconds
  • s - seconds
  • m - minutes
  • h - hours
  • d - days - assuming a day has always 24h
  • w - weeks - assuming a week has always 7d
  • y - years - assuming a year has always 365d

参考:https://prometheus.io/docs/prometheus/latest/querying/basics/#range-vector-selectors

下記の例は、CPU使用時間の累計を、現在から1分前までさかのぼって取得するPromQL。

利用例
node_cpu_seconds_total[1m]

実際にPrometheusで実行してみる。
Screen Shot 2021-06-09 at 21.14.33.png

4つの数値が表示されているが、15秒ごとにデータをとっているので、1分間だと4つとなる。
4つのデータはそれぞれCPU使用時間の累計@測定日時という意味になる。

データを見てみる。

node_cpu_seconds_total{cpu="0", env="development", instance="example.com:9100", job="node", mode="idle"}

18039154.58 @1623240806.473 => 6.8642065491192(ヶ月)@2021/06/09 21:13:26
18039169.54 @1623240821.473 => 6.8642122416548(ヶ月)@22021/06/09 21:13:41
18039184.5 @1623240836.473  => 6.86421793419(ヶ月)@22021/06/09 21:13:56
18039199.45 @1623240851.473 => 6.8642236229208(ヶ月)@22021/06/09 21:14:11

測定日時
2021/06/09 21:15分頃にこのPromQLを実行したので、測定日時が合っていることを確認できる。

CPU使用時間の累計
PromQLの結果では約6.8ヶ月となっている。

このPrometheusが入っているCentOSサーバーを起動した日は以下のシェルスクリプトで調べると、2020/11/11となっている。

$ date --date=@$(expr `date +%s` - `cut -d "." -f 1 /proc/uptime`)
Wed Nov 11 15:46:02 JST 2020

今日は2021/06/09なので、2020/11/11は約6.8ヶ月前ということで、CPU使用時間の累計も正しいことが確認できる。

rate関数

rate関数は、ある期間の時系列データの1秒あたりの平均増加率を計算する。
参考:https://prometheus.io/docs/prometheus/latest/querying/functions/#rate

以下は、現在から1分前までのCPU使用時間の累計の、1秒あたりの平均増加率を算出するPromQL。

利用例
rate(node_cpu_seconds_total[1m])

Screen Shot 2021-06-09 at 21.39.32.png

先程のRange vectorの例では4つのデータが出力されたが、今回はその4つの平均増加率となるので、1つに集約される。

{cpu="0", env="development", instance="example.com:9100", job="node", mode="idle"}
0.997555555568801

ちなみに、rate関数の他にirate関数というものがあるが、irateは突発的なスパイクなどの観測のみに利用すべきで、アラートなどの用途にはrateを使うべきとのこと。
参考:https://prometheus.io/docs/prometheus/latest/querying/functions/#irate

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0