SNMP監視のみキュー滞留が起きる
広瀬です。
少し前から少々困った事象が起きており、中々止められない為どこを弄れば良いか悩んでおります。
掲題の通りですが、SNMP監視のみですがキュー滞留が起きる傾向にあり、現状の項目数から1個
でもSNMPアイテムを増やす事が出来なくなりました。
但し、影響するのはSNMPアイテムのみで、Zabbixエージェント、エージェントレス監視などには特段
の影響はありませんし、通常Zabbixエージェント経由は幾ら増やした所で全体への影響は無いという
状況です。
■環境
ZabbixServer:1.8.11(古い且つあらゆるバグあるのは認識済み)
MySQL:5.5.30
CentOS:5.9
■ZabbixServerサーバ
CPU:Intel Xeon X3363 2.83GHz
MEM:16GB
■Zabbix用DBサーバ
CPU:Intel Xeon E5-1410 2.80GHz
MEM:32GB
■DBチューニング
InnoDBバッファプールなどはDB専用サーバということもあり、かなり限界ぎりぎりまで
割り当てています(他、二重書き込みしない様にfsyncも1回に絞る事や、バイナリログ
も同期はずらしています)
■アイテム数
総アイテム数:約13000(テンプレ含めてなので、実稼働数は11000前後か・・・)
SNMPアイテム数:約1300(テンプレ除外数)
アイテム監視間隔:最少1秒のものから、最大1800秒までかなりバラバラです。
※但し、一般的にCPU/MEM/HDD/NICなどリソース系監視は300秒を基準にしている
※Ping死活系、プロセス死活系は60秒を基軸にものに因っては300秒程度もある
※SNMP、エージェントレス以外は全てアクティブ監視として設定しています(PassiveだとTIME_WAITが増大するため)。
■ZabbixServerコンフィグ一部抜粋(コメントアウト部分はデフォルトから未変更)
StartPollers=10
# StartIPMIPollers=0
# StartPollersUnreachable=1
StartTrappers=10
StartPingers=15
StartDiscoverers=0
StartHTTPPollers=5
# HousekeepingFrequency=1
# MaxHousekeeperDelete=500
# DisableHousekeeping=0
# SenderFrequency=30
CacheSize=16M
# CacheUpdateFrequency=60
StartDBSyncers=8
HistoryCacheSize=64M
TrendCacheSize=16M
HistoryTextCacheSize=64M
Timeout=10
# TrapperTimeout=300
# UnreachablePeriod=45
# UnavailableDelay=60
# UnreachableDelay=15
# LogSlowQueries=0
StartProxyPollers=0
IPMI、ProxyやDiscoveryは利用していないため、値を「0」にしてあります。
若干Timeoutが10と小さいのは認識していますので、この辺も関係はするだろうと認識はしています。
また、StartPingersが大きめに設定されている点に関しては、この値を弄る前はインターナル監視で
ビジー率が常に100%となっていた為、増加させています(現時点でも15%程度のビジー率)
Pollerビジー率は現状10%ですが、7/10のAM7時過ぎからこの値となり、以前は数パーセント程度
でした(7/10のこの時間帯に設定変更は監査ログからはありませんでした)。現時点ではこのPoller
ビジー率が引き金となり、恒常的にSNMP監視に遅延が出てしまっています。
■1秒あたりの監視項目数
ダッシュボード画面で見る限りは:120前後
wcache,value,allで取得した場合:80~100前後
※wcache,value,allの値も、7/10のAM7時以前は120前後あったのが、Pollerビジー率に引きずら
れる形で、現状下がった状態です。
未だ足りない情報などあるかもしれませんが、何かヒントとなる項目やバグ情報をご存じでしたら、
ご教授いただければ幸いです。また、近々で別件でですがサーバ再起動が可能になったので、
それに合わせ設定変更も出来ればと考えております。
よろしくお願い致します。
TNK - 投稿数: 4769
Pollerのビジー率が10%程度であるのにキューに滞留してしまうということは、
SNMPのアイテムで、更新間隔時間内に応答を返却できていないアイテムが
存在してしまっているのではないでしょうか。
例えば、Timeoutは10秒に設定されているようですから、1秒とか短い更新
間隔であった場合に、実際のアイテムの値取得に5秒とかかかっていたり
します。
そうすると、タイムアウトは発生しなくても、1つのアイテムの値を取得
している間に、その間に取得するつもりだった取得処理がキューに溜まって
しまうことが予想されます。
実際のSNMPでの各値の取得にどの程度の時間がかかっているかや、SNMP
を利用して監視している監視対象の機器などの負荷状況もご確認ください。
ネットワーク機器によっては、あまり性能の高いCPUを利用していない場合
もあるようですので、あまり頻繁にSNMPでの値取得を行うと、短時間で
応答できなかったり、CPU負荷の高い状態になってしまうこともあるよう
です。
wakaba - 投稿数: 228
広瀬です
さっそくのご返答ありがとうございます。
少し情報が足りていませんでした。申し訳ありません。
snmpwalkコマンドで取得する場合に遅延は起きていません(ただ、手動でやる場合に同時並列実行
を実現が難しいので何とも言えませんが・・・)。
また、1台のネットワーク機器に対してではなく、今回の問題は全ネットワーク機器が対象になっており、
たとえば、ロードバランサのアイテムを追加したとしても、全然関係の無いL3SWやF/Wがキュー滞留し
始める・・・などなど監視対象機器のCPU使用率も大した事はありません。
強いて言えば、今年の頭に導入したロードバランサのアイテムを増加させてから、そのような傾向がみ
られるようになった・・・という状況なので、対LBだけならば当該LBを疑いもしたのですが、現状はその
ような状況ではなさそうです。
※LBに至っては専用ASICが相当強力なので、上下帯域合わせ400Mbps程度の通信処理でも数%
程度しかCPU使用率が上がらないというレベルです。
※他、VLANやACLも多様はしていませんし、F/Wもポリシーを大量に記載している訳では無いため、
そこまで高負荷状態にある機器は無いという前提です。
[root@test ~]# time snmpwalk -v2c -c community_name IPaddress OID
MIB~~~ = STRING: "511877"
real 0m0.035s
user 0m0.029s
sys 0m0.001s
timeコマンド付けての応答時間見ても大した事は無いと思われるので、どちらの問題であるか迷っている
原因とお考え頂ければと思います。
wakaba - 投稿数: 228
広瀬です
さっそくのご返答ありがとうございます。
少し情報が足りていませんでした。申し訳ありません。
snmpwalkコマンドで取得する場合に遅延は起きていません(ただ、手動でやる場合に同時並列実行
を実現が難しいので何とも言えませんが・・・)。
また、1台のネットワーク機器に対してではなく、今回の問題は全ネットワーク機器が対象になっており、
たとえば、ロードバランサのアイテムを追加したとしても、全然関係の無いL3SWやF/Wがキュー滞留し
始める・・・などなど監視対象機器のCPU使用率も大した事はありません。
強いて言えば、今年の頭に導入したロードバランサのアイテムを増加させてから、そのような傾向がみ
られるようになった・・・という状況なので、対LBだけならば当該LBを疑いもしたのですが、現状はその
ような状況ではなさそうです。
※LBに至っては専用ASICが相当強力なので、上下帯域合わせ400Mbps程度の通信処理でも数%
程度しかCPU使用率が上がらないというレベルです。
※他、VLANやACLも多様はしていませんし、F/Wもポリシーを大量に記載している訳では無いため、
そこまで高負荷状態にある機器は無いという前提です。
[root@test ~]# time snmpwalk -v2c -c community_name IPaddress OID
MIB~~~ = STRING: "511877"
real 0m0.035s
user 0m0.029s
sys 0m0.001s
timeコマンド付けての応答時間見ても大した事は無いと思われるので、どちらの問題であるか迷っている
原因とお考え頂ければと思います。