web-dev-qa-db-ja.com

プロメテウスとZabbixの違いは何ですか?

タイトルが言ったように、プロメテウスとZabbixの違いを教えてください。

21
The One

ZabbixとPrometheusはどちらもさまざまな監視シナリオで使用できますが、これらのいずれにも特別な専門化はありません。 Zabbixはプロメテウスよりも古く、おそらくより安定しており、すぐに使用できるソリューションを備えています。

Zabbixには、Cで記述されたコアとPHPベースのwebUIがあり、Cで記述された「エージェント」( クライアント側プログラム )を使用します。プロメテウスはGo言語で記述されています。

Zabbixは、ユーザーが選択したRDBMS(MySQL、PostgreSQL、Oracle、sqlite)にデータを保存します。 Prometheusは、バックエンドプロセスに組み込まれた独自のデータベースを使用します(監視データを保存するために特別に設計された非リレーショナルデータベースです 同様の方法で から OpenTSDB のデータモデルです)。

Zabbixはデフォルトで、サーバーが各監視マシンのエージェントに接続するときに「プル」モデルを使用し、エージェントは定期的に情報を収集してサーバーに送信します。別の方法は、エージェントがサーバーとの接続を確立し、必要なときにデータをサーバーに送信する場合の「アクティブチェック」モードです。サーバーがクライアントマシンから情報を収集する場合、プロメテウスは「プル」モデルを好みます。しかし、 Prometheus Push Gateway は、「プッシュ」モデルが必要な場合に使用できます。

Prometheusでは、メトリックを準備するために、アプリケーションがPrometheusクライアントライブラリ(さまざまなプログラミング言語で利用可能)を装備する必要があります。ただし、計測できないシステムまたはソフトウェアを監視するために、公式の "blackbox exporter" があります。これにより、さまざまなプロトコルでエンドポイントをプローブできます。さらに、広範囲にわたる サードパーティの "エクスポーター" およびプロメテウスのメトリックを公開するためのツールが利用可能です( Zabbixのエージェント と同様)。そのようなツールの1つがtelegrafです( https://github.com/influxdata/telegraf )。

Zabbixは、エージェントとサーバー間で独自のTCPベースの通信プロトコルを使用します。 Prometheusは、プロトコルバッファー(curlでの使いやすさを考慮したテキスト形式)とともにHTTPを使用します。

Zabbixは、視覚化のために独自のwebUIを提供します。 Prometheusは、収集したデータを調査し、ネイティブサーバー上で単純なグラフで視覚化するための基本的なツールを提供し、最小限のダッシュボードビルダー PromDash も提供します。しかし、Prometheusは Grafana のような最新の視覚化ツールによってサポートされるように設計されています。

Zabbixは、コアでアラートをサポートしています。 Prometheusは、コアから Alertmanager アプリケーションに分離されたアラートのソリューションを提供します。

54

Zabbixはマシンの観点から考えているため、それらの観点で物事について考えることに限定されます。アラートは、単純な計算に基づいてトリガーできます。

プロメテウスにはそのような制限はありません。サービスやデータセンターの観点から自由に考えることができます。アラートは、平均遅延が長すぎる、ディスクが4時間で一杯になるなど、有効な表現でトリガーできます。

https://blog.raintank.io/evolving-from-machines-to-services/ は、マシンベースの監視とサービスベースの監視の違いをより詳しく説明しています。

12
brian-brazil