こんにちは。オブザーバビリティの世界へようこそ。
現場で働いていると、「ディスク使用率80%でアラート」という設定に辟易することはありませんか? 80%に達した瞬間に叩き起こされ、いざログを見てみると「あと1ヶ月は持つ」なんてことは日常茶飯事。逆に、90%を超えてから慌てて対応して、ヒヤヒヤした経験がある人も多いはずです。
「閾値(しきいち)による監視」は、実はもう古いのです。
今日は、Prometheusの真髄である「時系列データの数学的解析」を用いて、障害が起きる前に未来を予知する、そんな魔法のような手法を伝授します。
—
1. なぜ「閾値アラート」は現場を疲弊させるのか
既存の「ディスク使用率 > 80%」といったアラートには、2つの致命的な欠陥があります。
1. ノイズの多さ: 一時的なスパイクで閾値を跨ぐたびに通知が飛び、運用者の「アラート疲れ」を招く。
2. 文脈の欠如: 「あと何時間で溢れるのか?」という一番重要な情報がない。80%が「1分後に溢れる」のか「1ヶ月後に溢れる」のかで、現場の優先度は天と地ほどの差があります。
我々が目指すべきは、「容量が溢れる瞬間」を逆算して、余裕を持って対応するための「予兆検知」です。
—
2. 未来を予測する:`predict_linear` と `deriv` の極意
Prometheusには、過去の傾向から直線を近似し、未来を予測する強力な関数が備わっています。
`deriv` (微分) で「増える勢い」を知る
`deriv(v range-vector)` は、指定した期間内での「値の変化率(傾き)」を算出します。
- 用途: 今、どれくらいの速度でディスクが食いつぶされているかを可視化します。
`predict_linear` (線形予測) で「枯渇の瞬間」を知る
`predict_linear(v range-vector, t scalar)` は、過去の傾向から `t` 秒後の値を予測します。
- 神髄: これを「容量がいっぱいになる瞬間」の判定に使います。
—
3. 実践:容量枯渇予測アラートの実装
それでは、実際に「あと4時間以内にディスクが溢れる」ことを検知するアラートを書いてみましょう。
過去6時間(6h)の傾向から、4時間後(4h)のディスク使用率を予測
(
predict_linear(node_filesystem_avail_bytes{device=”/dev/sda1″}[6h], 4 3600)
) < 0
このクエリの解説:
- `predict_linear` の結果が `0`(バイト)を下回るということは、「4時間後には空き容量がマイナスになる=溢れる」ことを意味します。
- `[6h]` というレンジ期間は、サーバーの特性に合わせて調整してください。短すぎるとノイズを拾い、長すぎると突発的な増加に気づけません。
アラート設定(alert.rules)の例
groups:
- name: disk_prediction
rules:
- alert: DiskWillFillSoon
# 4時間以内に枯渇するならクリティカル
expr: predict_linear(node_filesystem_avail_bytes[6h], 4 3600) < 0
for: 10m # 瞬間的なスパイクによる誤検知を防ぐための猶予期間
labels:
severity: critical
annotations:
summary: "ディスク枯渇予兆: {{ $labels.instance }}"
description: "現在の消費ペースが続くと、4時間以内にディスクがフルになります。"
---
4. 精度を高めるチューニングとダッシュボード構築
この手法を実務で使いこなすための、先輩からのアドバイスです。
チューニングのコツ
- 「for」句の活用: 予測値がブレることはあります。10分〜30分程度の `for` を置くことで、安定したアラートだけを通知するようにしましょう。
- 期間の最適化: `[6h]` はあくまで目安です。ログが急増しやすいサーバーなら `[1h]` に、緩やかな増加なら `[24h]` に調整してください。
ダッシュボード構築のステップ
Grafanaを使っているなら、以下の手順で「安心感」を可視化しましょう。
1. 現在の空き容量グラフ: `node_filesystem_avail_bytes` をそのまま表示。
2. 予測線: `predict_linear(node_filesystem_avail_bytes[6h], 4 3600)` を重ねて表示。
3. 枯渇ライン: 0のラインに赤い閾値線を引く。
これを眺めているだけで、「あと何日猶予があるか」が直感的にわかります。
—
最後に:自動化は「余裕」を生むためのもの
「これをマスターすれば、毎日の作業が劇的に楽になりますよ」
監視の目的は、異常を見つけることではありません。「異常が起きる前に、人間が優雅にコーヒーを飲みながら対処を済ませること」です。
まずは、あなたの環境で最もディスク容量が気になるサーバー1台から、このクエリを試してみてください。予測の線が「0」に向かって伸びていくのを見たとき、きっと「あ、これなら次回のメンテナンスで余裕を持って対応できるな」という確信が持てるはずです。
オブザーバビリティの力で、あなたの運用ライフがより知的で、心穏やかなものになることを願っています。何か詰まったら、いつでも聞いてくださいね。