2024 年 09 月 20 日
Zabbix 7.0の新機能 - Asynchronous Pollerとは
概要
Zabbix 7.0 ではパッシブ監視を処理するプロセスとして、Asynchronous poller が追加されました。
本記事では Asynchronous poller とは何かについて解説します。
Asynchronous Poller とは?
通常の Poller プロセスは、監視データを取得する処理 ( 接続、データ要求、データ受信等 ) を同期的に行います。そのため、各処理が完了する待ち時間に多くの時間を費やします。
一方、Asychronous poller プロセスでは、監視データを取得する処理を非同期的に行います。監視対象の応答を待たずに処理を進めるため効率がよくなっています。内部では Libevent ライブラリを利用して実装されています。
Asychronous poller が処理するアイテムは 3 つのタイプのみです。
全てのパッシブ監視が Asychronous poller になったということではなく、
通常の Poller が処理するアイテムもまだあります。以下の表にまとめます。
Poller のタイプ | アイテムタイプ |
---|---|
Asychronous poller | .Zabbix エージェント .HTTP エージェント .SNMP エージェント |
通常の Poller | . 外部チェック .SSH エージェント .TELNET エージェント . スクリプト . ブラウザ .Zabbix インターナル |
なお、ネットワークエラーが発生した場合、通常の Poller では、UnreachablePoller に処理が渡されます。一方、Asychronous poller では、UnreachablePoller には渡されず Asychronous poller で処理されます。
Asynchronous Poller の設定
下記は起動するプロセス数を指定するパラメータです。
デフォルト値は 1 です。
StartAgentPollers StartHTTPAgentPollers StartSNMPPollers
下記は、一度に監視を実行できる最大値を設定するパラメータです。
デフォルト値は 1000 です。
MaxConcurrentChecksPerPoller
MaxConcurrentChecksPerPoller について少し実装を確認します。
以下は asynchronous poller が configuration cache から監視するアイテムの設定を取得する処理です。
調査対象 : MIRACLE ZBX 7.0.2
src/libs/zbxpoller/async_worker.c
11618 int zbx_dc_config_get_poller_items(unsigned char poller_type, int config_timeout, int processing, 11619 int config_max_concurrent_checks, zbx_dc_item_t **items) 11620 { ... 11630 switch (poller_type) 11631 { ... 11638 case ZBX_POLLER_TYPE_HTTPAGENT: 11639 case ZBX_POLLER_TYPE_AGENT: 11640 case ZBX_POLLER_TYPE_SNMP: 11641 if (0 == (max_items = config_max_concurrent_checks - processing)) 11642 goto out; ... 11653 while (num < max_items && FAIL == zbx_binary_heap_empty(queue)) 11654 ...
L.11641 config_max_concurrent_checks (MaxConcurrentChecksPerPoller 値 ) から
processing( 処理がまだ終わってないアイテムの数 ) を引いた値を上限にして監視設定を取得します。
ここで取得した監視設定の監視データの取得がこの後の処理で非同期的に行われます。
まとめ
Asychronous poller を紹介しました。
Asychronous poller で処理は効率よくなっていますが、遅延が発生しなくなるということではありません。従来の Poller と同様に長いタイムアウトの発生等で監視は遅延します。
関連記事
- 続:Zabbix / MIRACLE ZBX Server の Poller プロセスのエラー処理
- Zabbix / MIRACLE ZBX Server の Poller プロセスのエラー処理
- Zabbix / MIRACLE ZBX Server の Poller プロセスの全体像解説