【ぷろめてうす】

Prometheus とは?

最終更新:
💡 数値の変化を定期的に取りに行き、異常の兆しを知らせる見張り番

オープンソースの監視・アラートツール。監視対象からメトリクス(数値の時系列データ)を定期的に取りに行って保存し、PromQLで集計してアラートに使う。CNCFのプロジェクト。

📌 このページのポイント
Prometheus — プルベース監視アーキテクチャ アプリ /metrics MySQL Exporter Node Exporter 監視対象 (Targets) pull(取りに行く) Prometheus 時系列DB (TSDB) PromQL(クエリ言語) サービスディスカバリ アラート Alertmanager Slack / Email / PagerDuty 通知の集約・ルーティング クエリ Grafana ダッシュボード グラフ・メトリクス可視化 プルモデル: Prometheus側がTargetのエンドポイントを定期的に取得 取得に失敗すると up=0。短時間のジョブは Pushgateway 経由で取得
Prometheusのイメージ — プルベースでメトリクスを収集し監視・アラート
ひよこ ひよこ
Push型とPull型の違いは?
ペンギン先生 ペンギン先生
Push型は監視対象のほうからデータを送る方式、Pull型は監視する側が取りに行く方式だよ。PrometheusはPull型で、アプリやエクスポーターが公開した/metricsなどのHTTPエンドポイントを定期的に取得するんだ。取得に失敗すると自動で作られる「up」というメトリクスが0になるから、相手が応答しないことにも気づけるよ
ひよこ ひよこ
Pull型だと、すぐ終わる処理は取りこぼさない?
ペンギン先生 ペンギン先生
取りこぼしやすいね。だから、短時間で終わるバッチ処理などはPushgatewayに結果を送っておいて、Prometheusがそこから取得する方法が用意されているんだ
ひよこ ひよこ
Grafanaとの関係は?
ペンギン先生 ペンギン先生
Prometheusはメトリクスを集めて保存し、PromQLで集計する役だよ。GrafanaはPrometheusなどにクエリを送って、グラフやダッシュボードとして見せるツールなんだ。組み合わせて使われることが多いね
ひよこ ひよこ
アラートはどう設定するの?
ペンギン先生 ペンギン先生
Prometheusのルールに「CPU使用率が5分間80%を超えたら」のような条件をPromQLで書くよ。条件に合うとAlertmanagerに送られて、重複をまとめたりグループ化したりしてから、メールやPagerDutyなどへ通知するんだ。鳴りすぎると見逃しの原因になるから、条件は少しずつ調整しようね
ひよこ ひよこ
おもしろい!データはずっと残しておけるの?
ペンギン先生 ペンギン先生
標準の保存は1台のディスクの中だけで、複製されないから、ディスクやサーバーが壊れると失われる可能性があるよ。既定では15日分を残すんだ。長く安全に残したいときは、ThanosやGrafana Mimirのような外部の保存先と組み合わせるよ。なお、課金のように100%の正確さが必要な集計には向かないと公式も書いているね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Prometheus」って出てきたら「メトリクスを定期的に集めて、集計とアラートに使う監視ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Prometheus」 = プロメテウス(ギリシャ神話で人間に火を与えた神)
💬 2012年にSoundCloudで生まれ、2016年にKubernetesに次ぐ2番目のプロジェクトとしてCNCFに加わったよ

参考資料

← 用語集にもどる