# 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