<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Prometheus on LIFELOG</title>
    <link>/tags/prometheus/</link>
    <description>Recent content in Prometheus on LIFELOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 0222-nnn</copyright>
    <lastBuildDate>Sat, 03 Oct 2026 00:00:00 +0900</lastBuildDate><atom:link href="/tags/prometheus/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Kubernetes監視入門 第6回｜GKEとGoogle Cloud Managed Service for Prometheusへ展開する</title>
      <link>/blog/2026_10_03_prometheus_gke_managed_prometheus/</link>
      <pubDate>Sat, 03 Oct 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_10_03_prometheus_gke_managed_prometheus/</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;&lt;a href=&#34;/blog/2026_09_25_prometheus_grafana_minikube_basics/&#34;&gt;第1回&lt;/a&gt;から&lt;a href=&#34;/blog/2026_10_02_prometheus_operator_kube_prometheus_stack/&#34;&gt;第5回&lt;/a&gt;までは、minikube上にPrometheus・Grafana・Prometheus Operator・kube-prometheus-stackを自分で構築し、仕組みを1つずつ確認してきた。ここまでの構成はすべて、自分でPrometheusを運用する前提（self-managed）だった。&lt;/p&gt;
&lt;p&gt;GKE Autopilot 1.25以降、GKE Standard 1.27以降では、Google Cloud Managed Service for Prometheus（以下GMP）のManaged Collectionが&lt;a href=&#34;https://cloud.google.com/stackdriver/docs/managed-prometheus/setup-managed&#34; target=&#34;_blank&#34;&gt;既定で有効になっている&lt;/a&gt;。Standardはクラスタ作成時に無効化できるが、Autopilot 1.25以降では無効化できない。GMPが管理するのはCollectorのスケール・保存先（Monarch）・PromQLクエリの処理基盤であり、Exporterのインストールや、&lt;code&gt;ServiceMonitor&lt;/code&gt; / &lt;code&gt;PodMonitor&lt;/code&gt; / &lt;code&gt;PrometheusRule&lt;/code&gt;に代わる&lt;code&gt;PodMonitoring&lt;/code&gt; / &lt;code&gt;ClusterPodMonitoring&lt;/code&gt; / &lt;code&gt;Rules&lt;/code&gt;の適用は引き続き利用者側の責任である。&lt;/p&gt;
&lt;p&gt;この記事では、GKE Standardクラスタを作り、第1回〜第5回の手動構成がGMPのCustom Resourceでどう表現されるかを実測する。可視化については、収集・保存がマネージドであることと、Grafanaを使い続けるかどうかは別の軸であることを示すため、次の2パターンを確認する。パターンAはCloud Monitoring Dashboardのウィジェットが使うクエリと同じPromQLで実際に時系列を取得できることまで、パターンBはPromQL APIでの取得とdata sourceの設定までを確認する。いずれもブラウザ上での画面描画そのものは確認していない。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;パターンA（可視化までGoogle Cloudで完結）&lt;/strong&gt;: Cloud Monitoring（Metrics Explorer・Dashboard）のPromQL APIで同じメトリクスを取得できるかを確認する。これを本線とする&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;パターンB（Grafana継続利用）&lt;/strong&gt;: GrafanaをGKE上に再デプロイし、第1回で作ったDashboard資産のPromQL定義をそのまま使ったクエリがAPI経由で同じ値を返すかを確認する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;対象読者は、第1回〜第5回でPrometheusの&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;・Prometheus Operator・kube-prometheus-stackを手で構築した経験がある人。GKE・GMPに初めて触れる人を想定している。マルチクラスタ・マルチプロジェクトでのメトリクス集約、remote_write・federationなどの高度な構成は扱わない。&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;#%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回〜第5回のminikube環境とは別に、GKE Standardクラスタを新規に作る。第1回から使っている&lt;code&gt;node-exporter&lt;/code&gt;のDaemonSetは&lt;code&gt;hostNetwork: true&lt;/code&gt; / &lt;code&gt;hostPID: true&lt;/code&gt;を設定し、&lt;code&gt;hostPath: path: /&lt;/code&gt;を&lt;code&gt;readOnly: true&lt;/code&gt;でマウントしている。GKE Autopilotは&lt;code&gt;hostNetwork&lt;/code&gt;とhost namespaceを許可せず、&lt;code&gt;hostPath&lt;/code&gt;についても書き込みモードは全面禁止、read-onlyモードでも&lt;code&gt;/var/log/&lt;/code&gt;配下のパスのみを許可するため、&lt;code&gt;/&lt;/code&gt;をマウントする同じManifestを再利用できない。同じExporter・同じPromQLクエリで第5回までと比較するという本記事の目的上、GKE Standardを選ぶ。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Kubernetes監視入門 第5回｜Prometheus OperatorとServiceMonitor・PodMonitorでkube-prometheus-stackを使う</title>
      <link>/blog/2026_10_02_prometheus_operator_kube_prometheus_stack/</link>
      <pubDate>Fri, 02 Oct 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_10_02_prometheus_operator_kube_prometheus_stack/</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;&lt;a href=&#34;/blog/2026_09_30_prometheus_kubernetes_sd_kube_state_metrics/&#34;&gt;第4回&lt;/a&gt;では、&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;と&lt;code&gt;relabel_configs&lt;/code&gt;を手で書き、Prometheus用のRBACも自分で用意した。対象がNode Exporterとkube-state-metricsの2種類だけでもこれだけの記述が必要だった。監視対象が増えるほど&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;や&lt;code&gt;relabel_configs&lt;/code&gt;の管理対象も増え、実運用では保守負荷が高くなる。&lt;/p&gt;
&lt;p&gt;Prometheus Operatorは、この繰り返しをCRD（Custom Resource Definition）で定義された型のリソースに置き換える。&lt;code&gt;ServiceMonitor&lt;/code&gt;・&lt;code&gt;PodMonitor&lt;/code&gt;・&lt;code&gt;PrometheusRule&lt;/code&gt;といったCustom Resourceを作るだけで、Operatorがそれらを読み取り、対応するPrometheus設定を生成する。この記事では、kube-prometheus-stack（Prometheus OperatorとPrometheus本体・Alertmanager・kube-state-metricsなどをまとめたHelm chart）を導入し、第1回〜第4回で手で書いた設定がこれらのCustom Resourceでどう表現されるかを、実際に生成された設定と見比べながら確認する。&lt;/p&gt;
&lt;p&gt;対象読者は、第1回〜第4回でPrometheusの&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;・alerting rule・RBACを手で書いた経験がある人。Prometheus Operator・kube-prometheus-stackに初めて触れる人を想定している。GKEやGoogle Cloud Managed Service for Prometheusは次回（第6回）で扱う。Alertmanagerの高可用構成、long-term storage、Grafana Operatorなど追加コンポーネントは扱わない。&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;#%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回〜第4回で使っているminikube（&lt;code&gt;--driver=docker&lt;/code&gt;、container runtime は &lt;code&gt;containerd&lt;/code&gt;）をそのまま使う。minikube・Kubernetes・kubectlのバージョンは変えていない。開始時点は第4回の「元に戻す」を終えた状態、つまりsingle-nodeで、&lt;code&gt;monitoring&lt;/code&gt; NamespaceにNode Exporter・Prometheus（&lt;code&gt;static_configs&lt;/code&gt;構成）・Grafanaだけが動いている状態を前提とする。第4回で追加したkube-state-metrics・Prometheus用RBAC・&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;は、比較のために参照はするが、今回の開始時点では存在しない。&lt;/p&gt;
&lt;!-- code-check: output --&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;minikube version: v1.39.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Kubernetes (Server Version): v1.37.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl (Client Version): v1.34.5-dispatcher
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;kubectlのクライアント版（1.34）とサーバー版（1.37）は、&lt;a href=&#34;https://kubernetes.io/releases/version-skew-policy/#kubectl&#34; target=&#34;_blank&#34;&gt;Kubernetesのversion skew policy&lt;/a&gt;が定める前後1マイナーバージョンの範囲を超えている。第1回から変えていない既知の状態であり、この記事内のコマンドはいずれも動作したが、再現する場合はサーバーと同じ1.37系のkubectlを使うことを勧める。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Kubernetes監視入門 第4回｜kubernetes_sd_configsとkube-state-metricsでPod・Nodeの状態を追う</title>
      <link>/blog/2026_09_30_prometheus_kubernetes_sd_kube_state_metrics/</link>
      <pubDate>Wed, 30 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_09_30_prometheus_kubernetes_sd_kube_state_metrics/</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;&lt;a href=&#34;/blog/2026_09_25_prometheus_grafana_minikube_basics/&#34;&gt;第1回&lt;/a&gt;は&lt;code&gt;static_configs&lt;/code&gt;でNode Exporterを1台だけ固定して監視した。そこで、Kubernetes上ではPodが増減し、Service Discoveryで検出対象自体が変わるケースには対応できないことを予告していた。&lt;a href=&#34;/blog/2026_09_27_prometheus_alerting_alertmanager_intro/&#34;&gt;第3回&lt;/a&gt;でも、&lt;code&gt;up{job=...}==0&lt;/code&gt;はPrometheusが既に知っているtargetへのscrape失敗しか検知できず、対象がService Discoveryで消えるケースは別問題だと明記した。&lt;/p&gt;
&lt;p&gt;この記事では、その課題に対応する&lt;code&gt;kubernetes_sd_configs&lt;/code&gt;を扱う。Node Exporterを2台に増やし、&lt;code&gt;static_configs&lt;/code&gt;でServiceを指定した構成ではtargetが1件のままで、背後の2台を個別に区別できないことを実際に確認したうえで、Podを1台ずつ個別のtargetとして検出する設定に切り替える。もう1つ、Kubernetesオブジェクト自体の状態（Podの&lt;code&gt;phase&lt;/code&gt;やNodeの&lt;code&gt;Ready&lt;/code&gt;状態など）をメトリクス化するkube-state-metricsも導入する。&lt;/p&gt;
&lt;p&gt;対象読者は、第1回〜第3回でPrometheus・Node Exporter・Alertmanagerの基本操作を経験した人。Prometheus OperatorやServiceMonitor、kube-prometheus-stackは扱わない（次回で扱う）。&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;#%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回〜第3回で使ったminikube（&lt;code&gt;--driver=docker&lt;/code&gt;、container runtime は &lt;code&gt;containerd&lt;/code&gt;）をそのまま使う。minikube・Kubernetes・kubectlのバージョンは変えていない。&lt;/p&gt;
&lt;!-- code-check: output --&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;minikube version: v1.39.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Kubernetes (Server Version): v1.37.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl (Client Version): v1.34.5-dispatcher
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今回はNode Exporterの複数pod化を確認するため、&lt;a href=&#34;https://minikube.sigs.k8s.io/docs/tutorials/multi_node/&#34; target=&#34;_blank&#34;&gt;minikubeのマルチノードクラスタ&lt;/a&gt;としてworker nodeを1台追加する。&lt;/p&gt;
&lt;!-- code-check: validate --&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;minikube node add -p prometheus-grafana-intro --worker
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl get nodes -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- code-check: output --&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME                           STATUS   ROLES           VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prometheus-grafana-intro       Ready    control-plane   v1.37.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prometheus-grafana-intro-m02   Ready    &amp;lt;none&amp;gt;          v1.37.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Node ExporterはDaemonSetで動かしているため、新しいNodeを追加すると、そのNodeにもPodが自動で作成される。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Alerting入門 第3回｜Prometheus Alerting rulesとAlertmanagerで通知を送る</title>
      <link>/blog/2026_09_27_prometheus_alerting_alertmanager_intro/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_09_27_prometheus_alerting_alertmanager_intro/</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;&lt;a href=&#34;/blog/2026_09_25_prometheus_grafana_minikube_basics/&#34;&gt;第1回&lt;/a&gt;・&lt;a href=&#34;/blog/2026_09_26_prometheus_promql_cheatsheet/&#34;&gt;第2回&lt;/a&gt;では、人がPromQLを実行して状態を確認するところまでを扱った。条件を満たしたときに自動で通知する仕組みはまだ扱っていない。実際の運用では、条件を式として登録しておき、一定時間満たされ続けたら通知が届く、という流れが必要になる。&lt;/p&gt;
&lt;p&gt;この記事では、Prometheusのalerting ruleとAlertmanagerを使って、scrape失敗を検知してから通知が届くまでの流れを実際に動かして確認する。対象読者は、第1回・第2回でPrometheusへのクエリ実行を経験した人。alerting ruleやAlertmanagerに初めて触れる人を想定している。&lt;/p&gt;
&lt;p&gt;この記事では、複数のレシーバーを使い分けるような複雑なルーティングは扱わない。Slack・PagerDutyなど外部サービスとの連携も扱わない。認証情報が必要になり、この記事の主題である「pending・firing・通知」の流れから外れるためである。&lt;/p&gt;
&lt;p&gt;Grafana Alertingも扱わない。Grafana自体が持つ別の仕組みであり、Prometheus Alertmanagerとは別物である。&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;#%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回・第2回で構築したminikube v1.39.0（Kubernetes v1.37.0）上の&lt;code&gt;monitoring&lt;/code&gt; Namespace（Node Exporter・Prometheus・Grafana）をそのまま使う。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;は版を変えていない。&lt;/p&gt;
&lt;p&gt;今回は、本記事の主題であるAlertmanagerを新規に追加する。検証時点で&lt;code&gt;prom/alertmanager:latest&lt;/code&gt;を実行し、&lt;code&gt;docker run --rm prom/alertmanager:latest --version&lt;/code&gt;で&lt;code&gt;v0.34.1&lt;/code&gt;であることを確認した。再現性のため、Manifestでは&lt;code&gt;prom/alertmanager:v0.34.1&lt;/code&gt;に固定して使う。&lt;/p&gt;
&lt;p&gt;もう1つ、&lt;code&gt;webhook-receiver&lt;/code&gt;という小さなPodを追加する。Alertmanagerが実際に通知を送ったことを、Slackなど外部サービスに依存せず確認するためである。&lt;code&gt;python:3.13-alpine&lt;/code&gt;上でPOSTを受け取り、受信時刻（UTC）と本文を1行にまとめて標準出力へ出すだけの、20行に満たないスクリプトを&lt;code&gt;ConfigMap&lt;/code&gt;でマウントしている。Deployment・Service・ConfigMapの3つに留め、認証や永続化は持たない。&lt;/p&gt;
&lt;p&gt;Prometheus側にも変更を加える。alerting ruleを読み込むための&lt;code&gt;rule_files&lt;/code&gt;と、通知先を指定する&lt;code&gt;alerting.alertmanagers&lt;/code&gt;を&lt;code&gt;prometheus-config&lt;/code&gt;の&lt;code&gt;ConfigMap&lt;/code&gt;に追加した。alerting ruleの本体は新しい&lt;code&gt;ConfigMap&lt;/code&gt;（&lt;code&gt;prometheus-rules&lt;/code&gt;）に分け、PrometheusのDeploymentに&lt;code&gt;rules&lt;/code&gt;という&lt;code&gt;Volume&lt;/code&gt;として追加でマウントしている。&lt;/p&gt;
&lt;div class=&#34;mermaid&#34; align=&#34;center&#34;&gt;
  &lt;pre&gt;
flowchart LR
    subgraph monitoring[&#34;monitoring Namespace&#34;]
        NE[&#34;node-exporter&lt;br/&gt;(DaemonSet)&#34;]
        PR[&#34;Prometheus&#34;]
        AM[&#34;Alertmanager&#34;]
        WH[&#34;webhook-receiver&#34;]
        NE -- &#34;scrape :9100&#34; --&gt; PR
        PR -- &#34;firing alert&#34; --&gt; AM
        AM -- &#34;webhook POST&#34; --&gt; WH
    end
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;追加するマニフェストは、記事ディレクトリの&lt;code&gt;sample/&lt;/code&gt;にある。記事ディレクトリを作業ディレクトリとして、次の順に適用する。&lt;/p&gt;</description>
      
    </item>
    
    <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>
    
    <item>
      <title>Prometheus・Grafana入門 第1回｜minikubeでメトリクス収集からダッシュボード作成まで</title>
      <link>/blog/2026_09_25_prometheus_grafana_minikube_basics/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_09_25_prometheus_grafana_minikube_basics/</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;Prometheus と Grafana は監視でよく使われるが、名前だけ知っていると役割が重なって見える。どちらもグラフを表示できるし、Exporter が何のために要るのかもはっきりしない。&lt;/p&gt;
&lt;p&gt;この2つは役割が違う。Prometheus はメトリクスを集めて保存し、問い合わせに応える。&lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/getting_started/#using-the-graphing-interface&#34; target=&#34;_blank&#34;&gt;Prometheus 自身にも Graph タブがある&lt;/a&gt;ため、グラフ表示そのものは Grafana が無くてもできる。&lt;/p&gt;
&lt;p&gt;Grafana が違うのは、複数の Panel をまとめた Dashboard として保存し、共有できる点である。&lt;strong&gt;Grafana が Prometheus に PromQL を送って結果を描く&lt;/strong&gt;という順番を、触って確認する。&lt;/p&gt;
&lt;p&gt;対象読者は、Prometheus の画面を開いたことがなく、PromQL もこれから学びたい人。minikube と kubectl の基本操作（&lt;code&gt;kubectl apply&lt;/code&gt; や &lt;code&gt;kubectl get&lt;/code&gt;）は前提とする。&lt;/p&gt;
&lt;p&gt;この記事では PromQL の詳細、Alertmanager、Prometheus Operator、GKE への展開は扱わない。kube-prometheus-stack も使わない。&lt;/p&gt;
&lt;p&gt;Deployment や DaemonSet の Manifest は自分で書く。Operator が後から何を隠すのかを、次回以降で比較できるようにするためである。&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;#%e6%a4%9c%e8%a8%bc%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Prometheus・Grafana・Exporter・PromQL の役割分担&lt;/li&gt;
&lt;li&gt;minikube 上に Prometheus・Node Exporter・Grafana を Manifest だけで構築する&lt;/li&gt;
&lt;li&gt;Prometheus が Node Exporter を &lt;code&gt;static_configs&lt;/code&gt; で scrape する経路&lt;/li&gt;
&lt;li&gt;Grafana に Prometheus を Data source として登録し、Dashboard を作る&lt;/li&gt;
&lt;li&gt;今回の構成が非永続であること、Node Exporter が何を監視しているかの実際の範囲&lt;/li&gt;
&lt;/ul&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%e3%81%ae%e6%a7%8b%e6%88%90&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;Node Exporter がホストのメトリクスを &lt;code&gt;/metrics&lt;/code&gt; に公開し、Prometheus がそれを scrape して保存する。Grafana は Prometheus に対して PromQL で問い合わせ、結果を Dashboard に描く。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
