採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

2024 年 09 月 20 日

Zabbix 7.0の新機能 - Asynchronous Pollerとは

概要

Zabbix 7.0 ではパッシブ監視を処理するプロセスとして、Asynchronous poller が追加されました。
本記事では Asynchronous poller とは何かについて解説します。

Asynchronous Poller とは?

通常の Poller プロセスは、監視データを取得する処理 ( 接続、データ要求、データ受信等 ) を同期的に行います。そのため、各処理が完了する待ち時間に多くの時間を費やします。
一方、Asychronous poller プロセスでは、監視データを取得する処理を非同期的に行います。監視対象の応答を待たずに処理を進めるため効率がよくなっています。内部では Libevent ライブラリを利用して実装されています。

Asychronous poller プロセスでは、監視データを取得する処理を非同期的に行います

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 7.0 新機能調査報告書 無料ダウンロード
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime