アクション実行遅延(alerter processes 100%)の対応方法について

いつもお世話になっております。
アクション実行について質問させてください。

アクション(メール通知)が遅延する事象が発生しており、対応に苦慮しております。
対策としては、現在のバージョン(3.0)を3.4へのバージョンアップし、
alerter processesが多重で起動できるよう設定を行うことだと考えておりますが
以下の相談内容にご助言いただけると助かります。

■環境
 CPU:Xeon プロセッサー E3-1220v6(3GHz/4コア/8MB)×1
 メモリ:8GB(8GB 2400 UDIMM×1)
 ディスク:300GB
 ZabbixVersion:Zabbix-Server 3.0

■事象
 ・アクション(メール通知)が一時間に100件程度実行される環境において、
  alerter processesが100%となり、アクション(メール通知)が遅延する事象が発生しております。

■相談内容

 ・CPU、メモリ等のリソースは落ち着いており、alerter processesのみ100%となる状況です。
  そのため、サーバ性能にかかわるものではないと仮定しておりますが一般的に
  「アクション(メール通知)が継続的に一時間に100件程度実行される環境」の場合、
  アクション(メール通知)が遅延するのは当然なのでしょうか?

 ・3.4へのバージョンアップした場合、サポートが2018/10に切れると認識しておりますが、
  脆弱性等の対応も行われず、パッチ及び、マイナーのバージョンアップも行われない認識でよいでしょうか?

 ・アクション(メール通知)が一時間に100件程度実行される環境において、
  バージョンアップせずに、アクション(メール通知)が遅延する事象を解決する方法はありますでしょうか?

※Zabbix 4.0が数日後にリリースされるならそちらにバージョンアップするのですが
 今月中旬には解決したいので待てない状況です。。。

参考にしたもの
 https://devlog.arksystems.co.jp/2017/05/17/2831/
 http://www.zabbix.jp/node/1041
 https://www.miraclelinux.com/product-service/zabbix/tech-lounge/zbx-tl-010-processes

以上です。

コメント表示オプション

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

alerter はメール送信が完了しないと、次の処理を行いません。
メールサーバとクライアント間で数回通信を行う必要があるので、
1プロセスしかいない以上、100通は処理しきれないと思います。
(個人的な体感では、秒間数件いったら良い方です。)

3.0 であれば Escalator は多重起動できるので、
「メールを送信するスクリプト」を用意してリモートコマンドで実行すれば、
それなりの数を処理できると思います。
(Zabbix標準のメール機能は使用できません)

リモートコマンドとメッセージの送信で挙動が違う箇所があるので、
変える場合はよく検討・検証したほうが良いと思います。

ユーザー TNK の写真

 ・CPU、メモリ等のリソースは落ち着いており、alerter processesのみ100%となる状況です。
  そのため、サーバ性能にかかわるものではないと仮定しておりますが一般的に
  「アクション(メール通知)が継続的に一時間に100件程度実行される環境」の場合、
  アクション(メール通知)が遅延するのは当然なのでしょうか?

当然ではないと思います。

ただし、Zabbixだけの問題ではなく、メールを送信するために利用
されているメールサーバーの処理性能が低ければ、そこがボトルネ
ックになっている可能性も考えられます。
メールサーバーの負荷状況や処理性能も確認してみてください。

 ・3.4へのバージョンアップした場合、サポートが2018/10に切れると認識しておりますが、
  脆弱性等の対応も行われず、パッチ及び、マイナーのバージョンアップも行われない認識でよいでしょうか?

Zabbix 4.0がいつリリースされるか次第ですが、Zabbix 4.0がリリ
ースされた後に約1ヶ月間のリミテッドサポートが提供され、それ
以降に関しては、ご認識されている通り、脆弱性や不具合の対応も
行われなくなるでしょう。

 ・アクション(メール通知)が一時間に100件程度実行される環境において、
  バージョンアップせずに、アクション(メール通知)が遅延する事象を解決する方法はありますでしょうか?

メールサーバーの処理性能がボトルネックになっているのであれば、
メールサーバの性能改善が効果があるかもしれません。

メールサーバーが並行で複数同時に処理することができ、それによ
って単位時間あたりの処理可能なメール数が増加するのであれば、
Zabbix 3.4以降の新機能であるalerterプロセスの複数化と、メデ
ィアの設定変更で並行処理可能に設定することで改善できるかもし
れません。

yk_taikoさんへ

3.0 であれば Escalator は多重起動できるので、
「メールを送信するスクリプト」を用意してリモートコマンドで実行すれば、
それなりの数を処理できると思います。

残念ながら、escalatorプロセスは、メール送信やスクリプト実行
の前処理までしかやらないので、実際のメール送信処理やスクリプ
ト実行で時間がかかってしまうような環境だと改善は望めないと思
います。

ユーザー yk_taiko の写真

TNKさん

パラレル処理すれば、Zabbix としては早くさばけるかなと思いました。

仰る通りメールサーバ側がボトルネックになっている(並列処理できない)ようであれば、
通知自体が早くなることはないですね。。。

ユーザー miamo の写真

返信が遅れました。すいません。

助言ありがとうございます。
いろいろ試した結果ですがメール側がボトムネックとなっていたのでそちらを解消したところ、
問題なく処理されました。

ちなみにEscalatorでのリモートコマンドはアクション時のリモートコマンドだと認識したのですが
scriptに与える引数にトリガー発生時のマクロを与えられない(と思っています。)ようで
メールを送信は厳しいみたいです。

いろいろ勉強になりました。ありがとうございます。

ユーザー miamo の写真

返信が遅れました。すいません。

メールサーバ側の処理を確認したところ、30秒間隔でしか処理されていないことがわかりました。
そちらの設定を変更して、体感的に数秒で100件程度をさばいてくれるようになり解決しました。

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