BLOG
2017 年 08 月 22 日
Zabbix 3.2以降の新機能解説(Zabbix 4.0を見据えて) その4 - Zabbixサーバーの各プロセスの枠割とデータの受け渡し
こんにちは、MIRACLE ZBX サポートを担当している花島タケシです。 前回までは、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 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 1
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 2
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 3
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 4
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 5
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 6
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 7
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 8
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 9
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 10
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 11
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 12
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 13
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 14
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 15
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 16
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 17
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 18
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 19
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 20
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 21