最近はクラウドやコンテナ環境でPrometheus + Grafanaをよく見ます。Zabbixとの考え方の違いも含めて、入門として整理します。
役割分担
- Prometheus … メトリクス(数値データ)を収集・保存し、条件で判定する本体
- Exporter … 監視対象の情報をPrometheusが読める形で出す小さなプログラム(node_exporter=サーバ情報、など)
- Grafana … 集めたデータを美しいダッシュボードで可視化するツール
Prometheusが集めて、Grafanaで見せる、という分業です。
プル型という考え方
Zabbixはエージェントが送る(プッシュ寄り)のに対し、Prometheusは**自分から取りに行く(プル型)**のが特徴です。監視対象がExporterで /metrics というURLを公開し、Prometheusが定期的にそこへHTTPで取りに行きます。
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['192.168.10.20:9100']
PromQLで欲しい数値を取り出す
集めたデータは、PromQLという問い合わせ言語で加工します。
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
これはCPU使用率(100 − アイドル率)を出す定番クエリです。最初は難しく見えますが、よく使う式はテンプレ化されているので、まずは真似から入れます。
Grafanaで可視化
GrafanaでPrometheusをデータソースに登録すれば、公開されている「ダッシュボード」をIDで読み込むだけで、立派なグラフが並びます。node_exporter用の定番ダッシュボードを入れると、それだけで運用に使える画面ができます。
Zabbixとの使い分け(私見)
- オンプレでサーバ台数が固定、GUIで完結したい → Zabbixが楽
- クラウド/コンテナで対象が動的、コード管理したい → Prometheus + Grafana
環境に合わせて選ぶのが正解で、どちらが上ということはないと感じています。まずは1台にnode_exporterを入れて、Grafanaにグラフが出るところまでやると一気に理解が進みます。