Elasticsearchのサポートは試験的です!
Zabbixはデータベースの代わりにElasticsearchを使用したヒストリデータの保存をサポートしています。ユーザーは、互換性のあるデータベースとElasticsearchの間でヒストリデータの保存場所を選択できます。このセクションで説明するセットアップ手順は、Elasticsearchバージョン7.Xに適用できます。以前のバージョンまたは新しいバージョンのElasticsearchを使用すると、一部の機能が意図したとおりに機能しない可能性があります。
1.すべてのヒストリデータがElasticsearchに保存されている場合、トレンドは計算もデータベースにも保存されません。トレンドが計算および保存されていないため、ヒストリ保存期間を延長する必要がある場合があります。 
 2.ElasticSearchを使用すると、データベースから値を取得する範囲クエリは、データストレージ期間のタイムスタンプによって制限されます。
関連するすべての要素間の適切な通信を確保するには、サーバー構成ファイルとフロントエンド構成ファイルのパラメーターが適切に構成されていることを確認してください。
更新するパラメーターを含むZabbixサーバー構成ファイルの草案:
### Option: HistoryStorageURL
       # History storage HTTP[S] URL.
       #
       # Mandatory: no
       # Default:
       # HistoryStorageURL= 
       ### Option: HistoryStorageTypes
       # Comma separated list of value types to be sent to the history storage.
       #
       # Mandatory: no
       # Default:
       # HistoryStorageTypes=uint,dbl,str,log,textZabbixサーバー構成ファイルに入力するパラメーター値の例:
この設定により、Zabbixサーバーは数値タイプの履歴値を対応するデータベースに保存し、テキスト履歴データをElasticsearchに保存します。
Elasticsearchは次のアイテムタイプをサポートしています:
サポートされているアイテムタイプの説明:
| アイテム値のタイプ | データベーステーブル | Elasticsearchでのタイプ | 
| 符号なし数値型 | history_uint | uint | 
| 浮動小数点数型 | history | dbl | 
| 固定長文字列 | history_str | str | 
| ログ | history_log | log | 
| テキスト | history_text | text | 
更新するパラメータを含むZabbixフロントエンド設定ファイル( conf/zabbix.conf.php)の草案:
// Elasticsearch url (can be string if same url is used for all types).
       $HISTORY['url']   = [
             'uint' => 'http://localhost:9200',
             'text' => 'http://localhost:9200'
       ];
       // Value types stored in Elasticsearch.
       $HISTORY['types'] = ['uint', 'text'];Zabbixフロントエンド設定ファイルに入力するパラメータ値の例:
この設定により、ElasticsearchにText、Character、およびLogの履歴値が強制的に保存されます。
また、すべてが正しく機能するようにconf/zabbix.conf.phpで$HISTORYをグローバルにする必要があります。(方法についてはconf/zabbix.conf.php.exampleを参照してください)
最後2つのステップは、Elasticsearch自体のインストールとマッピングプロセスを作成することです。
ElasticsearchをインストールするにはElasticsearchインストールガイドを参照してください。
マッピングはElasticsearchのデータ構造です(データベースのテーブルに似ています)。すべての履歴データ型のマッピングは、database/elasticsearch/elasticsearch.mapで利用できます。
マッピングの作成は必須です。指示に従ってマッピングを作成しないと、一部の機能が機能しなくなります。
textタイプのマッピングを作成するには、Elasticsearchに次のリクエストを送信します。
curl -X PUT \
        http://your-elasticsearch.here:9200/text \
        -H 'content-type:application/json' \
        -d '{
          "settings": {
             "index": {
                "number_of_replicas": 1,
                "number_of_shards": 5
             }
          },
          "mappings": {
             "properties": {
                "itemid": {
                   "type": "long"
                },
                "clock": {
                   "format": "epoch_second",
                   "type": "date"
                },
                "value": {
                   "fields": {
                      "analyzed": {
                         "index": true,
                         "type": "text",
                         "analyzer": "standard"
                      }
                   },
                   "index": false,
                   "type": "text"
                }
             }
          }
       }'CharacterおよびLog履歴値に対しても、対応するタイプを修正のうえで同様のリクエストを実行する必要があります。
Elasticsearchを使用するには、追加情報について要件ページを参照してください。
ハウスキーパーはElasticsearchからデータを削除しません
このセクションでは、パイプラインと取り込みノードを操作するために必要な追加の手順について説明します。
まず、インデックスのテンプレートを作成する必要があります。
次の例は、uintテンプレートを作成するためのリクエストです:
curl -X PUT \
        http://your-elasticsearch.here:9200/_template/uint_template \
        -H 'content-type:application/json' \
        -d '{
          "index_patterns": [
             "uint*"
          ],
          "settings": {
             "index": {
                "number_of_replicas": 1,
                "number_of_shards": 5
             }
          },
          "mappings": {
             "properties": {
                "itemid": {
                   "type": "long"
                },
                "clock": {
                   "format": "epoch_second",
                   "type": "date"
                },
                "value": {
                   "type": "long"
                }
             }
          }
       }'他のテンプレートを作成するには、URLを変更し(最後の部分はテンプレートの名前です)、「index_patterns」フィールドをインデックス名と一致するように変更して、データベース/elasticsearch/elasticsearch.mapから取得できる有効なマッピングを設定する必要があります。
たとえば、次のコマンドを使用して、テキストインデックスのテンプレートを作成できます。
curl -X PUT \
        http://your-elasticsearch.here:9200/_template/text_template \
        -H 'content-type:application/json' \
        -d '{
          "index_patterns": [
             "text*"
          ],
          "settings": {
             "index": {
                "number_of_replicas": 1,
                "number_of_shards": 5
             }
          },
          "mappings": {
             "properties": {
                "itemid": {
                   "type": "long"
                },
                "clock": {
                   "format": "epoch_second",
                   "type": "date"
                },
                "value": {
                   "fields": {
                      "analyzed": {
                         "index": true,
                         "type": "text",
                         "analyzer": "standard"
                      }
                   },
                   "index": false,
                   "type": "text"
                }
             }
          }
       }'これは、Elasticsearchが自動的に作成されたインデックスに有効なマッピングを設定できるようにするために必要です。 次に、パイプライン定義を作成する必要があります。パイプラインは、データをインデックスに入れる前の、ある種のデータの前処理です。次のコマンドを使用して作成できます uintインデックスのパイプライン:
curl -X PUT \
        http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
        -H 'content-type:application/json' \
        -d '{
          "description": "daily uint index naming",
          "processors": [
             {
                "date_index_name": {
                   "field": "clock",
                   "date_formats": [
                      "UNIX"
                   ],
                   "index_name_prefix": "uint-",
                   "date_rounding": "d"
                }
             }
          ]
       }'ユーザーは、丸めパラメーター("date_rounding")を変更して、特定のインデックスローテーション期間を設定できます。他のパイプラインを作成するには、URL(最後の部分はパイプラインの名前)を変更し"index_name_prefix"フィールドをインデックス名と一致するように変更する必要があります。
Elasticsearchドキュメントも参照してください
さらに、履歴データを複数の日付ベースのインデックスに保存することも、Zabbixサーバー構成の新しいパラメーターで有効にする必要があります。
### Option: HistoryStorageDateIndex
       # Enable preprocessing of history values in history storage to store values in different indices based on date.
       # 0 - disable
       # 1 - enable
       #
       # Mandatory: no
       # Default:
       # HistoryStorageDateIndex=0次の手順はElasticsearchのセットアップに関する問題のトラブルシューティングに役立つ場合があります。
http://localhost:9 00/uintなどの必要なインデックスURLへのGETリクエスト)。LogSlowQueriesを使用して、ElasticSearchデータベースで遅いクエリを確認できます。それでもインストールで問題が発生する場合は、このリストのすべての情報(マッピング、エラーログ、構成、バージョンなど)を含むバグレポートを作成してください。