<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PromQL on LIFELOG</title>
    <link>/tags/promql/</link>
    <description>Recent content in PromQL on LIFELOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 0222-nnn</copyright>
    <lastBuildDate>Sat, 26 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="/tags/promql/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>PromQL入門 第2回｜チートシート形式で早引きするrate・increase・topk・histogram_quantile</title>
      <link>/blog/2026_09_26_prometheus_promql_cheatsheet/</link>
      <pubDate>Sat, 26 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_09_26_prometheus_promql_cheatsheet/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;概要 
    &lt;div id=&#34;概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;「CPU使用率が高いノードを知りたい」「p95レイテンシを見たい」と思っても、目的からPromQLの書き方にすぐ辿り着けないことがある。&lt;a href=&#34;/blog/2026_09_25_prometheus_grafana_minikube_basics/&#34;&gt;第1回&lt;/a&gt;では、Prometheus・Grafanaの役割を扱った。PromQLも&lt;code&gt;rate()&lt;/code&gt;・&lt;code&gt;sum()&lt;/code&gt;・&lt;code&gt;avg()&lt;/code&gt;・&lt;code&gt;by()&lt;/code&gt;という最小限だけに触れている。実際の調査でよく使う&lt;code&gt;increase()&lt;/code&gt;・&lt;code&gt;topk()&lt;/code&gt;・&lt;code&gt;histogram_quantile()&lt;/code&gt;や、instant vectorとrange vectorの違いはまだ扱っていない。&lt;/p&gt;
&lt;p&gt;この記事では、これらの関数を実際のクエリ結果とともに整理する。対象読者は、第1回でPrometheusにPromQLクエリを送信する操作は経験した人。&lt;code&gt;[5m]&lt;/code&gt;のような時間指定の意味や、&lt;code&gt;rate()&lt;/code&gt;と&lt;code&gt;increase()&lt;/code&gt;の使い分けがまだ曖昧な人を想定している。Kubernetes・kubectlの基本操作とPromQLでの単純なmetric取得は前提とする。&lt;/p&gt;
&lt;p&gt;この記事ではAlerting rules・Alertmanager（第3回）は扱わない。Kubernetes Service Discovery・kube-state-metrics（第4回）も扱わない。新しいコンポーネントの追加も行わず、第1回のminikube環境をそのまま使う。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;まず見る：目的から引けるチートシート 
    &lt;div id=&#34;まず見る目的から引けるチートシート&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e3%81%be%e3%81%9a%e8%a6%8b%e3%82%8b%e7%9b%ae%e7%9a%84%e3%81%8b%e3%82%89%e5%bc%95%e3%81%91%e3%82%8b%e3%83%81%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;式の形だけ先に引きたい場合はここを見る。それぞれの根拠・実測は後続の節にある。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;やりたいこと&lt;/th&gt;
          &lt;th&gt;PromQL&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;いまの値を1点だけ見る&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;metric_name{label=&amp;quot;value&amp;quot;}&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;直近5分間のサンプルをまとめて取得する&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;metric_name{label=&amp;quot;value&amp;quot;}[5m]&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;counterの1秒あたりの増加率を出す（グラフ・記録ルール向け）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;rate(metric_name[5m])&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;counterの期間中の増加量を出す（人が読む数値向け）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;increase(metric_name[5m])&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ラベルごとに集計しつつ、そのラベルだけ残す&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;sum by(label) (expr)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;特定のラベルだけ落として集計する&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;sum without(label) (expr)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;複数本のメトリクスのうち最大値だけ見る（ラベルは残らない）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;max(expr)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最大値と、それがどのラベルの組み合わせかも見る&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;topk(1, expr)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;メモリ使用率を出す&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ディスク使用率を出す（マウントポイント指定）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;(1 - node_filesystem_avail_bytes{mountpoint=&amp;quot;/path&amp;quot;} / node_filesystem_size_bytes{mountpoint=&amp;quot;/path&amp;quot;}) * 100&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ネットワークの受信量（bytes/sec）を出す&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;rate(node_network_receive_bytes_total{device!=&amp;quot;lo&amp;quot;}[5m])&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;コア単位で上位N件だけ抽出する（single-node）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;topk(N, sum by(cpu) (expr))&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ノード単位で上位N件だけ抽出する（複数ノード）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;topk(N, &amp;lt;instanceでまとめた式&amp;gt;)&lt;/code&gt;（集約の仕方はmetricの意味次第。CPU使用率なら&lt;code&gt;avg by(instance)&lt;/code&gt;）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ヒストグラムからp95などのパーセンタイルを出す&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;histogram_quantile(0.95, sum by(le) (rate(metric_bucket[5m])))&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 class=&#34;relative group&#34;&gt;今回使う環境 
    &lt;div id=&#34;今回使う環境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e4%bb%8a%e5%9b%9e%e4%bd%bf%e3%81%86%e7%92%b0%e5%a2%83&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;第1回で作成した&lt;code&gt;monitoring&lt;/code&gt; Namespaceの構成（Node Exporter・Prometheus・Grafana）をそのまま使う。バージョンも第1回から変えていない。minikube v1.39.0（&lt;code&gt;--driver=docker&lt;/code&gt;）、Kubernetes v1.37.0、Prometheus &lt;code&gt;prom/prometheus:v3.14.0&lt;/code&gt;、Node Exporter &lt;code&gt;prom/node-exporter:v1.12.1&lt;/code&gt;である。すべてローカルのminikube上で完結し、クラウドの課金は発生しない。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
