現在位置: ホーム / 製品・サービス / 統合システム監視 MIRACLE ZBX / MIRACLE ZBX - Zabbix テック・ラウンジ / Zabbix 3.2以降の新機能解説(4.0を見据えて) その4

Zabbix 3.2以降の新機能解説(4.0を見据えて) その4

前回までは、Zabbix 3.4 で追加されたAlerterプロセスの複数起動について説明しました。 さらに詳しくAlerterプロセスの説明をする前に、今回はZabbixサーバーの各プロセスの枠割とデータの受け渡しについて解説します。

Zabbixサーバ各プロセスの役割とデータの受け渡し

前回までは3.4で追加されたAlerterプロセスの複数起動について記述しました。

今回もこの話題を続けようと思いましたが、Zabbixサーバの各プロセスの役割とデータ受け渡し方法について説明をしておらず、ここを知っていないと説明がスムーズにいかないため、今回はこの話を割り込むことにします。

 

代表的なZabbixサーバのプロセス

Zabbixサーバは起動直後にfork()を行って、様々な役割のプロセスが起動されます。
Pollerプロセスのように複数起動できるものもあります。(こういった時、日本語だと複数形を簡単に表せないため面倒です。)

代表的なプロセスとしては以下のものがあります。

  • Configuration Syncer
  • Poller (Unreachable Pollerも)
  • Trapper
  • DB Syncer
  • Escalator
  • Alerter

 

これらについて説明していきます。
1.8以降のほとんどのバージョンで同じような処理となっていますが、多少の違いはあります。
ただし、プロセス間の関連性等を知る上では大差はありません。

Configuration Syncer プロセス

Webフロントエンドで設定されたデータを読み込み、Configurationキャッシュ(物理メモリ)へ情報を書き込みます。
CacheUpdateFrequencyパラメータ間隔で、DBへアクセスを行いキャッシュの更新をします。

Poller プロセス

Configurationキャッシュのデータから生成された監視キューを読み取り、設定されたアイテム情報に則り定期的に監視を行います。
取得したデータはヒストリキャッシュ(物理メモリ)へと保存されます。
監視終了後に次回監視時刻を決定し、監視キューへ監視時刻順にソートして挿入します。
ネットワーク的な問題で監視に失敗した場合、次回監視はUnreachable Pollerに渡されます。
Poller、 Unreachable Poller共に複数起動することができます。StartPollersパラメータとStartPollersUnreachableパラメータがそれです。

Trapper プロセス

PollerプロセスはZabbixサーバーが主体となって監視しますが、Zabbixエージェントが主体となるアクティブ監視やzabbix_senderコマンドによるデータの受付に対応するプロセスです。
そればかりではなく、外部が主体の通信に対しては、このプロセスが対応します。
アクティブ監視やzabbix_senderにより送られてきた監視データには、タグが付与されており監視データであることが判別できます。
監視データに関しては、Pollerプロセスと同様にヒストリキャッシュへと保存されます。

DB Syncer プロセス

Pollerプロセス、Trapperプロセスがヒストリキャッシュへ保存したデータをDBへ書き出す処理を行います。
このときに、トリガー判定、トレンドデータの整形、イベント生成も行います。
イベント生成と簡単に記述しましたが、イベントを生成するだけではなく様々なことを行っています。
eventsテーブルへイベント情報の挿入を行い、さらにescalationsテーブルへもデータ挿入を行います。
リカバリメッセージを送るべきか?の判定もここで行われます。
StartDBSyncersパラメータによる複数起動が可能です。 

Escalator プロセス

 DB Syncerが書き出したescalationsテーブルをポーリングして、エスカレーションを行います。
「エスカレーションを行う」とは、escalationsテーブルから取得した情報を元にeventsテーブルから関連した情報を取得し、それに基づいたメッセージ送信前処理、コマンド実行前処理(ものによってはここで実行されます)を行います。
そして、それらの情報はalertsテーブルへと挿入します。
3.0.0よりStartEscalatorsパラメータにより複数起動できるようになりました。

Alerts(Alert Manager) プロセス

3.4.0よりAlertsプロセスが複数起動できるようになり、それを統括するプロセスがAlert Managerプロセスとなったことは既に記しました。
alertsテーブルをポーリングして、実際のメッセージ送信、コマンド実行を行います。

Timer プロセス

少し特殊なプロセスです。毎分0秒と30秒に動作します。
Timer系トリガー関数(nodata,date,dayofmonth,dayofweek,time,now)を含んだトリガー式の評価を行い、DB Syncer項で記した「イベント生成」を行います。
また、ホストのメンテナンス期間に対する処理も行います。
3.2.0より複数起動できるようになりました。StartTimersパラメータがそれです。

上記の関連性を以下の図に表しました。
プロセスとデータの関連性を理解していただけると思います。

Zabbix プロセスの関連性を示した図

関連記事

 

注意事項

本ドキュメントの内容は、予告なしに変更される場合があります。
本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。

 

MIRACLE ZBX 製品・サポートサービス 詳しくはこちら

MIRACLE ZBX Virtual Appliance V3.0 評価版のお申し込み

製品・サービスについてのお問い合わせ

お問い合わせフォームMIRACLE ZBX製品やサポートサービスについてのご相談やご質問は、「お問い合わせフォーム」よりお気軽にお問い合わせください。