Zabbix Agent の死活監視について

[背景]
保守担当している幾つかのシステムにて Zabbix Agent の死活監視が定期的にエラーになります。

該当時間帯の該当ホスト、及び Zabbixサーバ側のシステムリソースを確認しても
「CPU」「メモリ」「トラフィック」等のリソースは十分余裕がある状態となります。

一点、気になるのは「CPU」のコア毎の使用率を確認したところ
1つのコアの使用率が該当時間帯に高負荷状態(100%)を維持しておりました。

また、該当時間に監視対象ログが瞬間的に多く出力され、
Zabbix Agent プロセスが高負荷 ( 1コア占有=100% ) であった事を確認しております。

[質問]
Zabbix Agent としてはマルチコアで稼動できないのでしょうか。

コメント表示オプション

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

ポチさん

これZabbixエージェントの問題じゃなくてZabbixサーバの仕様です。A(^^;

大量にログが出力されるとhistory syncerの一つが100%busyになってその状態になります。

アイテムのデータをtrapperプロセスが受け取ると、履歴キャッシュに設定されます。
これをhistory syncerプロセスがDBに書き込んでいくのですが、
その際、取得したデータの整合性を保つために履歴キャッシュをロックします。
その為、history syncerプロセスが複数動作していてもロックかけたhistory syncerプロセス以外はWAITします。

ログ以外のデータの場合、データ量は大したことないのでなんでWAIT時間短いんですが、
ログが大量に出ていると履歴キャッシュのロック時間が長くなり取得できない事象が発生します。

ログ監視ですが、どの様なログをどんな形式で読まれていますか?
ログをキーワードで絞らずに取り込むとこのような事象が発生しやすいようです。

ユーザー KAZ の写真

ポチさん

すいません、読み違えがありました。
CPUフルなのはZabbixエージェントの方ですか?

ログ監視はZabbixエージェントからZabbixサーバにデータを送ります。
で、Zabbixサーバに対してZabbixエージェント(アクティブ)のプロセス1つが対応しています。

下記をチェックされると良いかも…
1)アイテムの設定はどうなっているのか?(キーワードで絞り込み取得データ量を軽減しているか?)
2)zabbix_agentd.confの送信関連の設定はどうなっているのか?
3)Zabbixサーバの履歴キャッシュは足りているか?
4)大量のログ発生で1つのhistory syncerプロセスがbusyになっていないか?

ユーザー ポチ の写真

KAZさん

早々ご確認、アドバイスを頂きありがとうございます。

>CPUフルなのはZabbixエージェントの方ですか?
⇒はい。CPUフル(1コア)はZabbixエージェントとなります。

>ログ監視はZabbixエージェントからZabbixサーバにデータを送ります。
>で、Zabbixサーバに対してZabbixエージェント(アクティブ)のプロセス1つが対応しています。

⇒承知しました。
 この場合、短時間に大量ログが出力された時はログ監視にてプロセスが占有されてしまい、
 他のAgent Active Check 等が一時的に死活監視用のパケットを送信できないという事はありますでしょうか。

>1)アイテムの設定はどうなっているのか?(キーワードで絞り込み取得データ量を軽減しているか?)
⇒Err , err 等のキーワードを含むかどうかの監視となっております。

>2)zabbix_agentd.confの送信関連の設定はどうなっているのか?
>3)Zabbixサーバの履歴キャッシュは足りているか?
>4)大量のログ発生で1つのhistory syncerプロセスがbusyになっていないか?
⇒こちらは改めて確認させて頂きます。

以上、取り急ぎお礼申し上げます。

ユーザー TNK の写真

 この場合、短時間に大量ログが出力された時はログ監視にてプロセスが占有されてしまい、
 他のAgent Active Check 等が一時的に死活監視用のパケットを送信できないという事はありますでしょうか。

送信できないということはありませんが、サーバへ送信し終えるま
での時間がかかってしまう場合があります。

Zabbixサーバ側からアクセスするタイプの監視(タイプが「Zabbix
エージェント」)であれば、別のプロセスで処理するのでより影響
は受けにくかったと思います。

ただし、Zabbixエージェントを動かしているOSの他の処理の負荷が
高い場合は、その処理も応答が遅れる場合がありますので、デフォ
ルトのタイムアウト時間である3秒以内に応答が無いと、そのアイ
テムは取得不可と判断されてしまいます。

正常に起動しているのに、負荷が高くて応答が遅延しているのであ
れば、zabbix_server.conf、zabbix_agentd.conf両方のTimeoutの
値を伸ばしてみてください。