モニタリングのシステムにおけるPull型とPush型のアプローチの違いについてまとめる。
監視サーバー側で監視対象ホストについて設定をし、監視サーバーから監視ホストにデータを取得しにいく。 ex. Prometheus、Nagios、Zabbixなど
PrometheusはPull型の欠点を補うかのように、exporterというPush型のようなアプローチのような仕組みがある。exporterを監視対象にホストに導入、監視サーバーがexporterのデータを取得するといった感じ。
監視対象ホストにエージェントをインストールする。ホストにインストールされたエージェントが監視サーバーにデータを送信する形。 ex. DatadogやMackerelなど
以下それぞれの観点で比較してみたが、サービスによって異なる可能性があるため、必ずしもそうではない場合もあると思われる。
観点 | Pull型 | Push型 |
---|---|---|
導入コスト | 監視対象ホストごとに設定が必要なため手間がかかる | 監視対象ホストにエージェントを導入するだけなので容易 |
管理コスト | 監視対象ホストは監視サーバー側で把握できる | 監視サーバー側では監視対象ホストを把握しない |
データの取得制御 | 監視サーバー側で調整 | 監視対象ホスト側で調整 |
リソース効率 | 監視サーバーは必要なときにデータを取得できるため、調整しやすい | 監視対象サーバーからデータ取得が頻繁な場合、監視対象ホストはリソースを多くを消費する |
リアルタイム性 | 監視サーバーのデータ要求タイミングに基づく | リアルタイムでデータを送信可能 |
サーバー負荷 | 監視サーバー側で一元的に調整しやすい | 監視対象ホスト側での調製になるため、対象が増えると管理コストが高い |
通信コスト | 監視サーバーが監視対象ホストから取得できるデータが無いような場合は浪費することになる | 監視対象ホストからPushされたものを監視サーバーが受け取るだけなので通信効率が良い |
エラー処理 | 監視対象ホストの異常に気づきやすい | 監視対象ホストが対象から外れたのか、異常発生なのか判断がし辛い |
上記の表は一般的なメリットとデメリットを示しており、実際の状況によって異なる場合がある。
モニタリングシステムを選択する際には、要件やシステムの特性に合わせて、Pull型またはPush型を選択する必要がある。
関連書籍