# pint [[Cloudflare]] が開発・OSS 公開した [[Prometheus]] ルールリンター(2022)。静的解析 + ライブ Prometheus 連携による**alerting rule / recording rule の品質保証**ツール。 - GitHub: https://github.com/cloudflare/pint - ドキュメント: https://cloudflare.github.io/pint/ ## 3 動作モード | モード | コマンド | 用途 | |--------|----------|------| | ファイルリント | `pint lint <file>` | ローカル検証 | | CI モード | `pint ci` | PR の変更行のみ検証 | | デーモン | `pint watch` | 定期実行 → 問題をメトリクスで公開 | **CI モード**は変更された行のみをテストするため、既存の大量ルールを毎 PR で再テストしない。**デーモンモード**は問題をメトリクスとして公開し、Prometheus 自身でアラート化する(監視の監視)。 ## 主なチェック - **`promql/syntax`**: PromQL 構文エラーを検出。閉じ括弧の欠落など。 - **`promql/series`**: ライブ Prometheus に接続し、クエリが参照するメトリクスとラベルの存在を確認。過去 1 週間を検索。recording rule が生成するメトリクスは「まだ存在しない」として適切にスキップ。 - **発火数推定**: 新規アラートルールが何件のアラートを生成するかを事前推定。[[アラートファティーグ]]防止。 - **時系列数推定**: recording rule が追加する時系列数を推定。Cloudflare では 1 時系列 ≈ 4 KiB。 - **ポリシー準拠**: runbook アノテーション・priority ラベルの必須化など、組織ルールを設定ファイルで定義して強制。 ## 設定例 ```hcl prometheus "prom1" { uri = "http://localhost:9090" timeout = "1m" } ``` ライブ Prometheus 設定なしでも静的解析(構文チェック等)は動作する。 ## 解決する問題 [[Prometheusルールリント|Prometheus の空クエリ問題]]: タイポ・メトリクス廃止・ラベル変更・rate() の時間範囲不足で、アラートが静かに機能しなくなる現象を CI/デーモンで早期検出。 ## 関連 - 開発元: [[Cloudflare]] - 概念: [[Prometheusルールリント]] - ソース: [[@2022__Cloudflare-Blog__Monitoring-our-Monitoring]] - 連携ツール: [[Prometheus]] / karma / jiralert