Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

6 Konfiguracja Elasticsearch

Wsparcie dla Elasticsearch jest eksperymentalne!

Áú»¢¶Ä²© obs?uguje przechowywanie danych historycznych za pomoc? Elasticsearch zamiast bazy danych. U?ytkownicy mog? wybra? miejsce przechowywania danych historycznych mi?dzy kompatybiln? baz? danych a Elasticsearch. Procedura konfiguracji opisana w tej sekcji dotyczy wersji Elasticsearch 7.X. W przypadku u?ycia wcze?niejszej lub p¨®?niejszej wersji Elasticsearch niekt¨®re funkcje mog? nie dzia?a? poprawnie.

Je?li wszystkie dane historyczne s? przechowywane w Elasticsearch, trendy nie s? obliczane ani przechowywane w bazie danych. Bez obliczonych i przechowywanych trend¨®w, mo?e by? konieczne wyd?u?enie okresu przechowywania historii.

Konfiguracja

Aby zapewni? poprawn? komunikacj? mi?dzy wszystkimi zaanga?owanymi elementami, upewnij si?, ?e plik konfiguracyjny serwera oraz parametry pliku konfiguracyjnego frontendu s? prawid?owo skonfigurowane.

Serwer i frontend Áú»¢¶Ä²©

Wersja robocza pliku konfiguracyjnego serwera Áú»¢¶Ä²© z parametrami do zaktualizowania:

### 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,text

Przyk?adowe warto?ci parametr¨®w do uzupe?nienia pliku konfiguracyjnego serwera Áú»¢¶Ä²©:

HistoryStorageURL=http://test.elasticsearch.lan:9200
       HistoryStorageTypes=str,log,text

Ta konfiguracja zmusza serwer Áú»¢¶Ä²© do przechowywania warto?ci historycznych typ¨®w numerycznych w odpowiedniej bazie danych i danych tekstowych w Elasticsearch.

Elasticsearch obs?uguje nast?puj?ce typy pozycji:

uint,dbl,str,log,text

Wyja?nienie obs?ugiwanych typ¨®w pozycji:

Typ warto?ci pozycji Tabela bazy danych Typ Elasticsearch
Liczba (ca?kowita bez znaku) history_uint uint
Liczba (zmiennoprzecinkowa) history dbl
Znak history_str str
Log history_log log
Tekst history_text text

Wersja robocza pliku konfiguracyjnego frontendu Áú»¢¶Ä²© (conf/zabbix.conf.php) z parametrami do zaktualizowania:

// Adres URL Elasticsearch (mo?e by? ?a¨½cuchem znak¨®w, je?li ten sam adres URL jest u?ywany dla wszystkich typ¨®w).
       $HISTORY['url']   = [
             'uint' => 'http://localhost:9200',
             'text' => 'http://localhost:9200'
       ];
       // Typy warto?ci przechowywane w Elasticsearch.
       $HISTORY['types'] = ['uint', 'text'];

Przyk?adowe warto?ci parametr¨®w do uzupe?nienia pliku konfiguracyjnego frontendu Áú»¢¶Ä²©:

$HISTORY['url']   = 'http://test.elasticsearch.lan:9200';
       $HISTORY['types'] = ['str', 'text', 'log'];

Ta konfiguracja zmusza do przechowywania warto?ci historycznych Tekst, Znak i Log w Elasticsearch.

Konieczne jest r¨®wnie? zrobienie $HISTORY globalnym w pliku conf/zabbix.conf.php, aby zapewni? prawid?owe dzia?anie ca?o?ci (zobacz conf/zabbix.conf.php.example jak to zrobi?):

// Plik konfiguracyjny interfejsu Áú»¢¶Ä²©.
       global $DB, $HISTORY;
Instalacja Elasticsearcha i tworzenie mapowania

Ostatnie dwa kroki, aby wszystko zadzia?a?o, to instalacja samego Elasticsearch oraz proces tworzenia mapowania.

Aby zainstalowa? Elasticsearch, prosz? odnie?? si? do .

Mapowanie to struktura danych w Elasticsearch (podobna do tabeli w bazie danych). Mapowanie dla wszystkich typ¨®w danych historycznych jest dost?pne tutaj: database/elasticsearch/elasticsearch.map.

Utworzenie mapowania jest obowi?zkowe. Niekt¨®re funkcjonalno?ci mog? nie dzia?a? poprawnie, je?li mapowanie nie zostanie utworzone zgodnie z instrukcj?.

Aby utworzy? mapowanie dla typu text, wy?lij nast?puj?ce ??danie do 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"
                }
             }
          }
       }'

Podobne ??danie nale?y wykona? w celu utworzenia mapowania dla warto?ci historycznych typu Character oraz Log z odpowiedni? korekt? typu.

Aby pracowa? z Elasticsearch, prosz? odnie?? si? do strony wymaga¨½ po dodatkowe informacje.

Proces porz?dkowania nie usuwa ?adnych danych z Elasticsearcha.

Przechowywanie danych historycznych w wielu indeksach opartych na dacie

Ta sekcja opisuje dodatkowe kroki wymagane do pracy z pipeline i w?z?ami ingest.

Aby rozpocz??, nale?y utworzy? szablony dla indeks¨®w.

Poni?szy przyk?ad przedstawia ??danie utworzenia szablonu dla typu 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"
                }
             }
          }
       }'

Aby utworzy? inne szablony, u?ytkownik powinien zmieni? adres URL (ostatnia cz??? to nazwa szablonu), zmieni? pole "index_patterns" tak, aby pasowa?o do nazwy indeksu, oraz ustawi? poprawne mapowanie, kt¨®re mo?na wzi?? z database/elasticsearch/elasticsearch.map.

Na przyk?ad, nast?puj?ce polecenie mo?e by? u?yte do utworzenia szablonu dla indeksu tekstowego:

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"
                }
             }
          }
       }'

Jest to konieczne, aby umo?liwi? Elasticsearch ustawienie poprawnego mapowania dla automatycznie tworzonych indeks¨®w. Nast?pnie nale?y utworzy? definicj? pipeline. Pipeline jest pewnego rodzaju przetwarzaniem danych przed umieszczeniem ich w indeksach. Poni?sze polecenie mo?e by? u?yte do utworzenia pipeline dla indeksu uint:

curl -X PUT \
        http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
        -H 'content-type:application/json' \
        -d '{
          "description": "dzienny indeks uint",
          "processors": [
             {
                "date_index_name": {
                   "field": "clock",
                   "date_formats": [
                      "UNIX"
                   ],
                   "index_name_prefix": "uint-",
                   "date_rounding": "d"
                }
             }
          ]
       }'

U?ytkownik mo?e zmieni? parametr zaokr?glenia ("date_rounding"), aby ustawi? okre?lony okres rotacji indeksu. Aby utworzy? inne pipeline, u?ytkownik powinien zmieni? adres URL (ostatnia cz??? to nazwa pipeline) oraz zmieni? pole "index_name_prefix" tak, aby pasowa?o do nazwy indeksu.

Zobacz tak?e .

Dodatkowo, przechowywanie danych historycznych w wielu indeksach opartych na dacie powinno by? r¨®wnie? w??czone w nowym parametrze w konfiguracji serwera Áú»¢¶Ä²©:

### 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

Rozwi?zywanie problem¨®w

Nast?puj?ce kroki mog? pom¨®c Ci w rozwi?zywaniu problem¨®w z konfiguracj? Elasticsearch:

  1. Sprawd?, czy mapowanie jest poprawne (??danie GET do wymaganego adresu URL indeksu, na przyk?ad http://localhost:9200/uint).
  2. Sprawd?, czy shard nie znajduj? si? w stanie b??du (ponowne uruchomienie Elasticsearch powinno pom¨®c).
  3. Sprawd? konfiguracj? Elasticsearch. Konfiguracja powinna umo?liwia? dost?p z hosta frontendu Áú»¢¶Ä²© oraz z hosta serwera Áú»¢¶Ä²©.
  4. Sprawd? logi Elasticsearch.

Je?li nadal napotykasz problemy z instalacj?, prosz? utw¨®rz raport o b??dzie zawieraj?cy wszystkie informacje z tego listy (mapowanie, dzienniki b??d¨®w, konfiguracja, wersja, itp.).