🛠️

Prometheus & Grafanaとは何ぞや

2022/03/01に公開

Prometheus/Grafanaで監視しているサービスを担当することになったのですが、あまり知らなかった(特にPrometheus)ので調べました。

Prometheusとは

オープンソースの監視システム。
ロゴはプロメテウスの火っぽい。人間の生活を根本的に変えるような強大な力を与えるツールですよということか。

できること

  • 監視対象のサーバのリソース情報などを収集する
  • 収集したデータに対してクエリを発行する
  • 閾値を設定してアラートを発令する

アーキテクチャ


公式ドキュメントのアーキテクチャ図を左から見ていく。

  • Exporter (図の左下):
    • 監視エージェント的なもの。
    • 監視対象のリソース毎にExporterが異なる(Exporterがあるものを監視できる)※詳細
    • 基本的にはDockerイメージが提供されているため、監視対象サーバ上でExporterのDockerコンテナを動作させて使用するが、自分でソースからビルドすることも可能(Exporter次第)
  • Service Discovery (図の真ん中上):
    • 監視対象となるサーバやノードの情報をプラットフォーム(Google Cloud, AWS, Azure, Kuberentes等)から自動で取得する仕組み
  • Prometheus Server (図の真ん中):
    • Exporterに対して定期的にポーリングを行い、メトリクスを収集してDBに保管する
    • DBは時系列データベース
    • アラートルールに基づきAlertmanagerにアラートを送信
  • Alertmanager (図の右上):
    • Prometheus Serverから送られたアラートに重複排除やグループ化などの処理を行う
    • メールやチャット等のチャネルと統合し、アラートを多数のチャネルに通知できる
  • Web UI (図の右下):
    • Prometheus Query Language (PromQL) というデータベース言語でクエリ
    • Web UIに表示できる。が、UIはそこまで機能が多くないためGrafanaとの組み合わせで使われることが多いらしい。

まとめると、ServerがExporterからメトリクスをpullして保管し、そのデータを可視化したりアラートを出したりできるというものですかね。意外とシンプルで分かりやすいですね。
(大量にあるExporterを使いこなそうとしたら大変そうですが)

Zabbixとの違いは?

リソース系の監視ツールといえばZabbixが名高いように思います。
Zabbixはそれ自体が高機能なのに対し、Prometheusは他サービスと組み合わせる前提で拡張性・柔軟性高く作られているようです。

Grafanaとは

データ可視化ツール。
ロゴはディ〇ニーの主人公がおばあちゃんから受け継いだペンダントに彫ってありそう。

できること

  • データソースに対してリアルタイムにクエリを実行した結果を良い感じに表示する
  • 様々なデータソースに対応 ※詳細
    • 例えばGrafana側でデータソースとしてPrometheusを設定することで統合可能
  • アラートを設定し、OpsgenieやPagerduty、メール、Slack等々様々な宛先に通知 ※詳細

業務でGrafanaを触った感じ、ダッシュボードはとてもカスタマイズ性が高くて見やすい。

補足

参考

Discussion