モニタリングシステムにおけるPull型とPush型のアプローチの違い

インフラストラクチャ

概要

モニタリングのシステムにおけるPull型とPush型のアプローチの違いについてまとめる。

Pull型

監視サーバー側で監視対象ホストについて設定をし、監視サーバーから監視ホストにデータを取得しにいく。 ex. Prometheus、Nagios、Zabbixなど

PrometheusはPull型の欠点を補うかのように、exporterというPush型のようなアプローチのような仕組みがある。exporterを監視対象にホストに導入、監視サーバーがexporterのデータを取得するといった感じ。

Push型

監視対象ホストにエージェントをインストールする。ホストにインストールされたエージェントが監視サーバーにデータを送信する形。 ex. DatadogやMackerelなど

Pull型とPush型の違い

以下それぞれの観点で比較してみたが、サービスによって異なる可能性があるため、必ずしもそうではない場合もあると思われる。

観点 Pull型 Push型
導入コスト 監視対象ホストごとに設定が必要なため手間がかかる 監視対象ホストにエージェントを導入するだけなので容易
管理コスト 監視対象ホストは監視サーバー側で把握できる 監視サーバー側では監視対象ホストを把握しない
データの取得制御 監視サーバー側で調整 監視対象ホスト側で調整
リソース効率 監視サーバーは必要なときにデータを取得できるため、調整しやすい 監視対象サーバーからデータ取得が頻繁な場合、監視対象ホストはリソースを多くを消費する
リアルタイム性 監視サーバーのデータ要求タイミングに基づく リアルタイムでデータを送信可能
サーバー負荷 監視サーバー側で一元的に調整しやすい 監視対象ホスト側での調製になるため、対象が増えると管理コストが高い
通信コスト 監視サーバーが監視対象ホストから取得できるデータが無いような場合は浪費することになる 監視対象ホストからPushされたものを監視サーバーが受け取るだけなので通信効率が良い
エラー処理 監視対象ホストの異常に気づきやすい 監視対象ホストが対象から外れたのか、異常発生なのか判断がし辛い

上記の表は一般的なメリットとデメリットを示しており、実際の状況によって異なる場合がある。

モニタリングシステムを選択する際には、要件やシステムの特性に合わせて、Pull型またはPush型を選択する必要がある。

参考


関連書籍