zabbixでのリアルタイム監視について

お世話になります、zabbixの構築をこれから始めようとしているのですが、どの位リアルタイムで監視出来るのか性能限界について知りたいのですが。

まずは条件を単純に監視対象をネットワーク機器に限定して、ping / telnet / ssh レベルで障害監視した場合に最高で、どの位のインターバルで監視可能なものなのでしょうか?
だいたいの目安(実績)でよいので、どなたか教えてもらえますでしょうか?

(監視対象)
ネットワーク機器: 約300台程度(Router/Switch類)

(zabbix server 環境)・・・仮にこの程度の環境だったとして
cpu: 4 core
Memory: 4GB
Disk 80GB
centos7
zabbix 3.0

(理由)
現行の監視環境では1~10sec程度のリアルタイムで、ほぼユーザが気づく前に検知が可能なので、それと同等レベルの監視が可能かどうか確認したい。
zabbixの構築例では最高5min位のインターバルを用いる例が多い様ですが、ちょっとそれだと遅いかなと思っております。
条件がまだ複雑なようだと、pingに死活監視で、最高どのくらいになるか知りたいのですが。

宜しくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

設定上、監視間隔は1秒まで設定できたと思いますが、アイテム
(監視項目)によっては監視対象に負荷をかけてしまうことになり
ますし、処理性能によっては、キューに溜まってしまって正常に監
視できなくなる危険性があります。

icmppingでの監視でもリトライやタイムアウトを考慮した場合、設
定によっては1秒では収まらない場合もあるので、そのようなアイ
テムを1秒間隔で設定していると、キューに溜まってしまいます。

気になったのは「ping / telnet / ssh」と挙げられていましたが、
ネットワーク機器であるのに、SNMPを使用して監視されないのでし
ょうか?

監視対象がネットワーク機器とのことですので、telnetやsshで細
かな間隔で値を取得しようとすると、ネットワーク機器のCPU負荷
が問題となることも予想されます。
10秒間隔でも設定はできますが、やはり、アイテムによっては監視
対象の処理能力に左右されるでしょう。

SNMPであったとしても、確認の頻度が多いと、監視の為にネットワ
ーク機器のCPU負荷を上げてしまって、最悪の場合、ネットワーク
の遅延が発生しかねないと思います。

あと、検知をしてそれをメール等で通知するまでの時間となると、
さらに時間がかかります。
というのも、アクションを実行するのは、デフォルトでは30秒間隔
で実行するようになっていたと思いますので、検知してから最大30
秒程度の遅延が発生する可能性があることにもご注意ください。

zabbix_server.conf内のSenderFrequencyの値を調整すれば、より
短い時間間隔で通知の処理が行われるかもしれませんが、それでも
この値の最小値は5秒までとなっているようです。
https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_s...

Zabbixサーバーや監視対象への負荷、障害発生時から検知して対応
するまでの時間などを考慮して、アイテムの更新間隔やアクション
の実行間隔を検討して調整してみてください。

ユーザー mari3030 の写真

早速のご回答、ありがとうございます。

>SNMPを使用して監視されないのでしょうか?
SNMPでもやるつもりですが、質問がややこしくなるかと思いあえて書きませんでした。

>キューに溜まってしまって正常に監視できなくなる危険性があります。
についてはzabbix server 側の現行性能の話ではなく、リトライやtimeout設定や、監視される側の性能によるものであるのであれば、調整によってある程度限界まで縮めることは出来るかもと理解したのですが。
条件はあるとおもいますが、トータルで1分以内位での300ノード位のNetwork障害の検知は十分zabbixの性能的に可能と考えても大丈夫そうでしょうか?
現状、何かNetworkが遅いと、結構ユーザから直ぐ電話があるので、それに負けないようにResponseしたいという気持ちになってしまっております。

また、教えて頂いた
https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_s...
の他調整Pointがあれば触ってみたいと思いますが、

キューに溜めないようにするためには、/etc/zabbix/zabbix_server.conf の

### Option: StartPingers
# Number of pre-forked instances of ICMP pingers.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartPingers=1

のStartPingers=を変更? すれば改善したりしますでしょうか?

もし何か、調整Point等があればアドバイス頂ければ幸いです。

ユーザー heya の写真

そもそもの前提として、Zabbix は値を取得してからアクション実行までを一連の流れとして処理するのではなく、独立したプロセスがデータベース経由でデータをやり取りしつつ処理していくようになっています。
大雑把にはこんな感じです。
・アイテムの値を取得し、トリガーの条件判定し、アイテムの値と判定結果をデータベースに保存
アクションを実行するならそれもデータベースに保存
・データベースを読んでアクションの実行計画を立てて、それをデータベースに保存
・これから処理すべきアクションをデータベースから読んで、順に実行

独立して動いているということは、それぞれのプロセスが定期的にデータベースをチェックするということであり、チェック直後に更新されても、次のチェックまでは気づかないわけです。つまり、どうしてもある程度は時間がかかってしまうので、Zabbix はあまり即時性を求めるような環境には向いていないと思っています。
参考:http://www.zabbix.jp/node/1041 の 2012/01/23 - 03:26 の鈴木さんの回答

1~10秒という厳しい即時性が必要なら別のツールや自作ツールを使った方がいいような気がします。
例えばこんな感じで(表示の都合上、インデントを全角スペースにしています)。
--------------------------------------------------
#!/bin/sh
PATH=/usr/bin:/usr/sbin
dir=/some/dir
host=$1
lastfile=$dir/$host.last
newfile=$dir/$host.new

if [ !-e $lastfile ]; then
 echo $host is alive > $lastfile
fi

while [ 1 ]; do
 fping $host > $newfile 2> /dev/null

 if [ "`diff $lastfile $newfile`" ]; then
  通知するコマンド
 fi
 sleep 1
 mv $newfile $lastfile
done
--------------------------------------------------

それはそれとして、Zabbix でどうにかする場合の話、つまり最初の質問の「どの位リアルタイムで監視出来るのか性能限界について知りたい」に対する答えは、やってみないと分からないという身も蓋もない答えになってしまうのですが、それだけではなんなので、サーバーの設定についての一般論です。

サーバーの設定でパフォーマンスに関係ありそうなのは Start~s 、~Frequency 辺りでしょうか。
※Proxy~ はプロキシを使わないなら関係ありませんし、VMware~ は VMware 監視をしないなら関係ありませんのでここでは省略。
5年以上前で少し古いのですが、ここも参考にしてください。
http://kodai74.blogspot.jp/2011/02/zabbix-1618.html

検証したわけではないのですが、私の感覚です(○関係ありそう、×たぶん関係ない)。
StartDBSyncers   ×超大規模なら影響あるかも、とのこと
StartDiscoverers  ×ディスカバリ系の機能を使わないなら関係ない
StartEscalators  ?(これを増やすと(結果的に)Escalator の実行タイミングが早くなるのか?それとも単にキューが溜まりにくく(つまり遅くなりにくく)なるのか?)
StartHTTPPollers  ×Web 監視しないなら関係ない
StartIPMIPollers  ×IPMI 監視しないなら関係ない
StartJavaPollers  ×JMX 監視しないなら関係ない
StartPingers    ○icmpping の対象が多いなら増やした方がいい
StartPollersUnreachable ×疎通不可になったときの話なので、あまり関係ないと思う
StartPollers    ○ポーリングの対象が多いなら増やした方がいいかも
StartSNMPTrapper  ×SNMP トラップを受けないなら関係ない
StartTimers    ×トリガーで nodata などを使わないならあまり関係ない
StartTrappers   ×Zabbix エージェントのアクティブ監視や zabbix_sender を使わないなら関係ない
CacheUpdateFrequency  ×設定を反映する間隔なので、設定変更時以外は関係ない
HousekeepingFrequency  ×保存期間を過ぎたデータを削除する間隔なのであまり関係ない
SenderFrequency    ○TNK さんが書かれた通り

キャッシュ系(~CacheSize)は、足りないと落ちるとのことですが、落ちない程度に設定してあれば、それ以上増やしてもパフォーマンスが上がるわけではないそうです。

結局、サーバーの設定としては StartPingers、StartPollers、SenderFrequency ぐらいしか無いのかなと。
StartEscalators は、よく分かりませんので、試しに大きくしてみてもいいかもしれません。

あとは、大量のアイテムを処理するならデータベース(MariaDB?)のチューニングも必要かもしれません。

この辺りも見てみるといいです。
https://www.zabbix.com/documentation/3.0/manual/appendix/performance_tuning
https://www.zabbix.com/documentation/2.2/jp/manual/appendix/performance_...

ユーザー mari3030 の写真

heya 様

いろいろと情報ありがとうございます。
あらためて、Communityってすごいですね。
保守契約もしてないのに、情報が入るのがわたし的にはとても新鮮です。
(TNK様も返信ありがとうございました。)

”zabbixはdatabaseを経由してデータをやり取りし処理が進むので、即時性を求める環境ではあまり向いていない件”、なんとなく遅い動きを見ると理解出来ます。
”やってみないと分からない身も蓋もない話”も理解できました。(笑)

ただ、IT環境がクラウド化され、アクセスもWANだけに頼るシンクラ環境なんかは、レスポンス性(即時性)も非常に重要で、それはそれでネットワーク監視の一つの重要な要件ではないかと思うのですが。
(先日行ったNetwork監視のセミナーでも言われてましたが、これから益々NETがキーになるので、ユーザの立場に立った監視が本当に重要になるということで、zabbix Japanも出展されていたかと...)

もしそんな性能が今後zabbixに期待出来るのであれば、うれしい限りです。

頂いた情報もとに、チューニングしたいと思います。

ありがとうございました。