Zabbix 7.0 新機能検証 (ポーリングの高速化編)

こんにちは、SCSK株式会社の小寺崇仁です。

先日Zabbixの7.0がリリースされました。
Zabbix7.0では、様々な機能追加、改善が行われております。

詳細は以下をご確認ください。

 

はじめに

今回は7.0で行われた性能改善について検証をしていきたいと思います。

公式HPでは以下の記載があります。

Improved data collection speed and scalability
・Faster metric polling for agent, SNMP and HTTP checks
・Next metric can now be polled before waiting for a response from previously requested metric

今までは、エージェント監視、SNMPエージェント監視、HTTPエージェント監視は「poller」プロセスで監視が行われておりましたが、「agent poller」「snmp poller」「http poller」に分割されたようです。
また、値を取得する際に、リクエスト送信からレスポンス受信までの間はプロセスが待機をしており、ビジー率上昇をしておりましたが、非同期で処理を行うように改善されたようです。

検証環境について

6.0と7.0のZabbixサーバからSNMPDのインストールされたサーバーに対してSNMPポーリング監視を行い、稼働状況を確認します。

サーバ情報

項目 Zabbix6.0 Zabbix7.0 SNMPサーバ
OS RHEL 9.4 RHEL 9.4 RHEL 9.4
Zabbixバージョン 6.0.30 7.0.0
SNNPDバージョン 5.9.1
インスタンスタイプ t2.medium(2vcpu,4GB) t2.medium(2vcpu,4GB) t2.medium(2vcpu,4GB)
ディスク 30GB (gp3 3000iops) 30GB (gp3 3000iops) 30GB (gp3 3000iops)

Zabbixのパラメータ情報

項目 Zabbix6.0 Zabbix7.0 備考
StartPollers 5 5 デフォルト=5
StartSNMPPollers 10 7.0新機能
MaxConcurrentChecksPerPoller 1000 7.0新機能
CacheSize 512M 512M 検証時に不足
TrendCacheSize 256M 256M 検証時に不足

※上記以外がデフォルトパラメータを使用
※Mariadbはデフォルトパラメータを使用

監視設定

  1. インターフェースのステータスを取得するテンプレートを作成しました。
  2. インターフェースは50個ある想定で50アイテム作成しています。
  3. ホストを1000台登録し、1のテンプレートを適用しました。
  4. SNMPインターフェースのBulkリクエストは検証のため無効にしました。
  5. アイテムの取得間隔は1分です。


7.0の新機能を使うには、アイテムのOIDは「get[OID]」「walk[OID,OID]」と記入する必要があります。

Zabbixの状態としては以下の通りです。

項目 Zabbix6.0 Zabbix7.0 備考
監視対象ホスト 1002 1002  
アイテム数 50175 50180   
1秒あたりの監視項目数(NVPS) 835.86 835.91  

検証結果1(通常監視)

Zabbix6.0

  • Pollerプロセスの使用率は平均11%
  • キューなし

Zabbix7.0

  • SNMPPollerプロセスの使用率は1%前後
  • キューなし

 

結果&考察

Zabbix7.0でSNMPPollerプロセスの使用率がほぼ上がらず、とても効率よく処理ができていると思われます。

検証1はZabbixサーバとSNMPサーバが同じVPCにあり、SNMPの値の取得が一瞬で終わっています。検証2では実際の環境に近い形で検証しします。

検証2(レスポンスの悪いOIDを追加する)

実際の監視では、レスポンスの悪いNW機器があり、待機時間によりPollerプロセスの使用率を上昇させていることがあると思います。
検証2では、レスポンスの悪いカスタムOIDを追加し検証します。

/etc/snmp/snmpd.confに以下を追記します。

view    systemview    included   .1
extend sleep /tmp/test.sh

/tmp/test.shの内容は以下となります。2秒待機してから値を返却します。

#!/bin/sh
sleep 2
echo 11

新しく作成した監視のアイテムを作成します。
各ホストにアイテムを1つ(1000アイテム)追加しています。

Zabbix6.0

  • 応答が遅いOIDが追加されたことでPollerプロセスの使用率が50%弱まで上昇しました。

Zabbix7.0

  • SNMPサーバ側が負荷に耐えられなくなったため、MaxConcurrentChecksPerPollerを1000→100に変更しました。
  • SNMPPollerプロセスの使用率は1%前後のままから上昇しませんでした。(値を取得するまで待機していない事が分かります)

値が正しく取得できているか不安になりますが、問題なく取得できています。

総括

  • データ収集処理は非同期処理に変更され、値の取得を待機しなくなったため、パフォーマンスが劇的に改善しました。
  • 1プロセスのリクエスト数(MaxConcurrentChecksPerPoller)が設定できるようになり、効率化されている。
  • アイテム作成時にOIDの書き方に注意が必要です。(get[],walk[]をつける必要がある)

最後に

弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

SCSK Plus サポート for Zabbix

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

著者について

Zabbixの構築をメインに担当しています。
■資格
 Zabbix認定プロフェッショナル
 AWS Certified Solutions Architect - Professional
 Google Certified Professional - Cloud Architect
 LPIC 303,304 ORACLE MASTER Gold DBA 11g
 CCNA Oracle Certified Java Programmer, Silver SE 7

小寺崇仁をフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

Zabbixソリューションプロダクト運用・監視
シェアする
タイトルとURLをコピーしました