【ZABBIX7.0LTS】zabbix_server.confのパラメータ調整

## はじめに
Zabbixサーバーを構築する際、データ取得や内部処理に関するパラメータのチューニングを行いました。その際に調査したパラメータについて、それぞれの概要や役割を記載したいと思います。

## 調整するにあたって
Zabbixサーバーをチューニングする際、現在の状況を正確に把握することが重要です。その際に役立つのが、デフォルトで提供されている「Template App Zabbix Server」テンプレートです。このテンプレートをZabbixサーバー自身に割り当てることで、データ収集プロセスやデータキャッシュの使用状況を詳細に把握することができます。

:::note info
40％～70％程度で安定するようにチューニングすることをおすすめする。
:::

【Template App Zabbix Server の取得データ】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/d2aa7f6f-01aa-eae9-7285-5e19ab6e8ff4.png)

【Template App Zabbix Server のグラフ】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/69bff859-6393-ded7-dfeb-789328a7e4a5.png)

１．データ収集プロセスの使用率グラフ（ICMPやZabbixAgentによるデータ収集など）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/3e5d5af3-caba-4a98-bd88-859950d0ca3f.png)

２．内部処理プロセスの使用率グラフ（アラートやエスカレーター処理など）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/b1914017-6c5c-18ce-d94b-1c7eb203bd9e.png)

３．データキャッシュの使用率グラフ（取得したデータのキャッシュなど）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/e6348f49-91e3-0480-8ddd-6a55b5eb8600.png)

## データ取得プロセス（パラメータ）
ここでは、監視対象から監視データを取得するプロセスと関連するパラメータについて説明します。

※ 同期処理：
　監視データを取得する一連の処理（接続、データ要求、データ受信など）を同期的に実行します。そのため、各処理が完了するまでの待ち時間が長くなると、データ取得に時間がかかる場合があります。

※ 非同期処理：
　監視データの取得処理を非同期的に実行します。そのため、監視対象からの応答を待たずに次の処理を進めることができ、効率的にデータ取得を行うことが可能です。

#### 【 poller プロセス（同期処理） 】
「poller プロセス」とは、パッシブチェック用のデータを取得する通常のポーラープロセスのことです。具体的には、「Zabbix Agent パッシブ」や「SNMP」、「シンプルチェック」などのデータを取得する役割を持っています。

「poller プロセス」のプロセス数は、「StartPollers」パラメータで設定します。

#### 【 agent poller プロセス（非同期処理） 】
「agent poller プロセス」とは、Zabbix Agentのパッシブチェック用のデータを非同期で取得するためのポーラープロセスのことです。

「agent poller プロセス」のプロセス数は、「StartAgentPollers」パラメータで設定します。

#### 【 trapper プロセス （同期処理）】
「trapper プロセス」とは、アクティブチェック、トラップ、プロキシ通信からのデータを受信するプロセスのことです。具体的には、「Zabbix Agent アクティブ」、「Zabbixトラッパー」、「アクティブProxy」からのデータを受信する役割を持っています。

「trapper プロセス」の数は、「StartTrappers」パラメータで設定します。

#### 【 icmp pinger プロセス（同期処理） 】
「icmp pinger プロセス」とは、icmpping チェック（シンプルチェック）用のデータを取得するポーラープロセスのことです。具体的には、死活監視のデータを取得する役割を持っています。

「icmp pinger プロセス」の数は、「StartPingers」パラメータで設定します。

#### 【 http poller プロセス （同期処理）】
「http poller プロセス」とは、Web監視用のデータを取得するポーラープロセスのことです。具体的には、ウェブシナリオ監視のデータを取得する役割を持っています。

「http poller プロセス」の数は、「StartHTTPPollers」パラメータで設定します。

#### 【 http agent poller プロセス （非同期処理）】
「http agent poller プロセス」とは、Web監視用のデータを非同期で取得するポーラープロセスのことです。

「http agent poller プロセス」の数は、「StartHTTPAgentPollers」パラメータで設定します。

#### 【 unreachable poller プロセス （同期処理）】
「unreachable poller プロセス」とは、監視対象ホストが到達不能（unreachable）と判定された場合に再試行を行う専用のポーラープロセスです。具体的には、監視対象ホストが一時的に到達不能（ネットワーク障害や一時的な停止など）の状態になった際、このプロセスを利用して再試行を行い、監視の復旧を図る役割を持っています。また、復旧するまでの間、そのホストは通常のPollerプロセスの対象から外されます。

「unreachable poller プロセス」のプロセス数は、「StartPollersUnreachable」パラメータで設定します。

:::note info
**【 関連するパラメータ 】**
「UnreachableDelay」パラメータ（秒）：
到達不能時間中にホストが利用可能かどうかを再チェックする間隔を
指定するパラメータ。

「UnreachablePeriod」パラメータ（秒）：
到達不能と判断する時間を指定するパラメータ。
:::

## 内部処理プロセス（パラメータ）
ここでは、ZABBIXサーバーの内部処理プロセスと関連するパラメータについて説明します。

#### 【 timer プロセス 】
「timer プロセス」とは、メンテナンス期間に関連する処理を担当するプロセスのことです。具体的には、「メンテナンス期間中の制御（アラートの抑制やログ記録など）」を行います。

「timer プロセス」の数は、「StartTimers」パラメータで設定します。

#### 【 escalator プロセス 】
「escalator プロセス」とは、障害状態が継続しているイベントに対して、段階的な通知やリモートコマンドの実行などのアクションのエスカレーション処理を担当するプロセスのことです。トリガー発動後、一定時間が経過し、条件を満たした場合に次の通知ステップを実行する機能を持っています。

「escalator プロセス」の数は、「StartEscalators」パラメータで設定します。

#### 【 alerter プロセス 】
「alerter プロセス」とは、障害通知の送信やアラートスクリプトの送信を行うプロセスのことです。

「alerter プロセス」の数は、「StartAlerters」パラメータで設定します。

:::note info
**【 関連するパラメータ 】**
「AlertScriptsPath」パラメータ：
アラートスクリプトを配置するパスを指定するパラメータ。
:::

## キャッシュ（パラメータ）
ここでは、ZABBIXサーバー上のデータキャッシュと関連するパラメータについて説明します。

#### 【 configuration キャッシュ 】
「configuration キャッシュ」とは、ホスト設定、アイテム設定、トリガー設定など、データベースから取得した一部の設定を一時的に保存するためのメモリ領域のことです。

「configuration キャッシュ」のサイズ（M,G）は、「CacheSize」パラメータで設定します。

:::note warn
監視対象が増えると消費量が増加する。
またキャッシュが不足すると、ログにエラーが出力され、プロセスが停止する。
:::

#### 【 history キャッシュ 】
「history キャッシュ」とは、取得した監視データをデータベースに保存する前に一時的に保管するためのメモリ領域のことです。

「history キャッシュ」のサイズ（M,G）は、「HistoryCacheSize」パラメータで設定します。

:::note warn
収集データが増えると消費量が増加する。
またキャッシュが不足すると、Zabbixサーバーが新規データを受け付けなくなる。
:::

#### 【 value キャッシュ 】
「value  キャッシュ」とは、トリガーの評価や計算アイテムの算出に使用する監視データを一時的に保存するためのメモリ領域のことです。

「value キャッシュ」のサイズ（M,G）は、「ValueCacheSize」パラメータで設定します。

:::note warn
監視データが増えると消費量が増加する。
またキャッシュが不足した場合、データベースから直接データを取得する動作が発生するため、Zabbixサーバーのパフォーマンスが低下する。
:::

## その他（パラメータ）
ここでは、その他のパラメータについて説明します。

#### 【 Timeout（パラメータ） 】
「Timeout」は、エージェント、SNMP、Web監視などへの接続待ち時間を秒単位で指定するパラメータです。

:::note warn
タイムアウトが発生すると、「zabbix_server.log」や「zabbix_agentd.log」にエラーが出力されます。また、タイムアウトが長期間続く場合、対象のアイテムは「Not supported」（サポートされていない）状態に移行します。
:::

#### 【 ExternalScripts（パラメータ） 】
「ExternalScripts」は、外部スクリプトを配置するパスを指定するパラメータです。

#### 【 EnableGlobalScripts（パラメータ） 】
「EnableGlobalScripts」は、Zabbixサーバのグローバルスクリプトを有効/無効を設定するパラメータです。

:::note info
**【グローバルスクリプト】**
ZabbixのWebインターフェースから手動で実行できる、事前に定義されたスクリプトのこと。

<img width=200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/63c4627e-ae07-1eb8-7aea-6ddc60132405.png">

:::


## 参考資料
・[【Zabbix】Zabbix チューニング Serverプロセスの理解【Zabbix Advent Calendar 2016】](https://blog.serverworks.co.jp/tech/2016/12/17/zabbixtuning/)
・[【わたしに♥おまかせ Zabbix②】Zabbixサーバーと内部プロセスについて](https://devlog.arksystems.co.jp/2017/05/17/2831/)
・[OSS監視ツールの失敗事例から学ぶ、知って得する正しい導入手順と注意点](https://www.miraclelinux.com/online-service/download/seminar-document/seminar_document/20171122-seminar-document-2)
・[【ZABBIX7.0】1 Zabbix server](https://www.zabbix.com/documentation/current/en/manual/appendix/config/zabbix_server#startsnmppollers)
・[【ZABBIX7.0】1 Server](https://www.zabbix.com/documentation/current/en/manual/concepts/server#server-process-types-and-threads)
・[Zabbix 7.0 の紹介](https://www.sraoss.co.jp/tech-blog/zabbix/zabbix70-newfeature-latest/)
・[Zabbix 7.0の新機能 - Asynchronous Pollerとは](https://www.cybertrust.co.jp/blog/linux-oss/system-monitoring/tech-lounge/zabbix70-asynchronous-poller.html)
・[Zabbix / MIRACLE ZBX ServerのPollerプロセスの全体像解説](https://www.cybertrust.co.jp/blog/linux-oss/system-monitoring/tech-lounge/zbx-tl-015-poller.html)
・[Pollerプロセスの必要数は？ 【MIRACLE ZBX 1.8, 2.0, 2.2】](https://www.miraclelinux.com/tech-blog/i5bojf)