[comment]: # ({47c25517-4ff8e217})
# 7 Elasticsearch подешавање

::: noteimportant
 Подршка Elasticsearch-а је експериментална!

:::

Zabbix подржава складиштење историјских података помоћу Elasticsearch-а
уместо базе података. Корисници могу да изаберу место складиштења за историју
података између компатибилне базе података и Elasticsearch-а. Подешавање
процедуре описана у овој секцији је применљива на Elasticsearch
верзију 7.X. У случају да се користи ранија или новија верзија Elasticsearch-а,
неке функције можда неће радити како је предвиђено.

::: notewarning
 1\.Ако су сви подаци историје ускладиштени у Elasticsearch-у,
трендови се **не** израчунавају нити чувају у бази података. Без трендова
који нису израчунати или сачувани, период складиштења историје ће можда морати да буде
продужен.<br>
2\. Када се користи Elasticsearch, упити опсега који преузимају вредности из базе података су ограничени временском ознаком периода складиштења података.
:::

[comment]: # ({/47c25517-4ff8e217})

[comment]: # ({0b6587bd-0b6587bd})
#### Конфигурација

Да бисте осигурали правилну комуникацију између свих укључених елемената, уверите се да су
конфигурациона датотека сервера и параметри конфигурационе датотеке корисничког интерфејса
правилно конфигурисани.

[comment]: # ({/0b6587bd-0b6587bd})

[comment]: # ({293ef64c-293ef64c})
##### Zabbix сервер и кориснићки интерфејс

Нацрт конфигурационе датотеке Zabbix сервера са параметрима који треба ажурирати:

   ### Опција: HistoryStorageURL
   # HTTP[S] URL за складиштење историје.
   #
   # Обавезно: не
   # Подразумевано:
   # HistoryStorageURL= 
   ### Опција: HistoryStorageTypes
   # Листа типова вредности раздвојених зарезима који ће бити послати у складиште историје.
   #
   # Обавезно: не
   # Подразумевано:# HistoryStorageTypes=uint,dbl,str,log,text

Пример вредности параметара за попуњавање конфигурационе датотеке Zabbix сервера са:

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

Ова конфигурација приморава Zabbix сервер да чува вредности историје нумеричких типова у одговарајућој бази података и текстуалне податке историје у Elasticsearch-у.

Elasticsearch подржава следеће типове ставки:

   uint,dbl,str,log,text

Објашњење подржаних типова ставки:

||||
|---|---|---|
|**Item value type**|**Database table**|**Elasticsearch type**|
|Numeric (unsigned)|history\_uint|uint|
|Numeric (float)|history|dbl|
|Character|history\_str|str|
|Log|history\_log|log|
|Text|history\_text|text|

Zabbix конфигурациона датотека кориснићког интерфејса (`conf/zabbix.conf.php`) нацрт са параметрима који треба ажурирати:

   // Elasticsearch URL (може бити стринг ако се исти URL користи за све типове).
   $HISTORY['url']= [
   'uint' => 'http://localhost:9200',
   'text' => 'http://localhost:9200'
   ];
   // Типови вредности сачувани у Elasticsearch-у.
   $HISTORY['types'] = ['uint', 'text'];

Пример вредности параметара за попуњавање Zabbix конфигурационе датотеке корисничког интерфејса са:

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

Ова конфигурација приморава да чува вредности историје `Text`, `Character` и `Log` у Elasticsearch-у.

Такође је потребно да $HISTORY буде глобално у `conf/zabbix.conf.php` да би се осигурало да све исправно функционише (погледајте `conf/zabbix.conf.php.example` за упутство како то да урадите):

   // Zabbix GUI конфигурациона датотека.
   global $DB, $HISTORY;

[comment]: # ({/293ef64c-293ef64c})

[comment]: # ({000d1106-e9a9c5bd})
##### Инсталирање Elasticsearch-а и креирање мапирања

Последња два корака за покретање система су инсталирање самог Elasticsearch-а и креирање процеса мапирања.

Да бисте инсталирали Elasticsearch, погледајте [Elasticsearch водич за инсталацију](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html).

::: noteclassic
Мапирање је структура података у Elasticsearch-у (слично atable-у у бази података). Мапирање за све типове историјских података је доступно овде: `database/elasticsearch/elasticsearch.map`.
:::

::: notewarning
Креирање мапирања је обавезно. Неке функционалности ће бити покварене ако мапирање није креирано према упутствима.
:::

Да бисте креирали мапирање за тип `text`, пошаљите следећи захтев на Elasticsearch:

``` {.java}
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` са одговарајућом корекцијом типа.

::: noteclassic
За рад са Elasticsearch-ом погледајте [Захтеве](/manual/installation/requirements#serverproxy) за додатне информације.
:::

::: noteclassic
[Housekeeper](/manual/web_interface/frontend_sections/administration/housekeeping) не брише никакве податке из Elasticsearch-а.
:::

[comment]: # ({/000d1106-e9a9c5bd})

[comment]: # ({8451a0a2-8451a0a2})
#### Чување података историје у више индекса заснованих на датуму

Овај одељак описује додатне кораке потребне за рад са цевоводима и уносом чворова.

За почетак, морате креирати шаблоне за индексе.

Следећи пример приказује захтев за креирање шаблона uint:

``` {.java}
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"` да би се подударало са називом индекса и да би се поставило валидно мапирање, које се може преузети из `database/elasticsearch/elasticsearch.map`.

На пример, следећа команда се може користити за креирање шаблона за текстуални индекс:

``` {.java}
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 index:

``` {.java}
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
документација](https://www.elastic.co/guide/en/elasticsearch/reference/master/date-index-name-processor.html).

Поред тога, чување података историје у више индекса заснованих на датуму такође треба да буде омогућено у новом параметру у конфигурацији Zabbix сервера:

   ### Опција: HistoryStorageDateIndex
    # Омогући претходну обраду вредности историје у складишту историје да би се вредности чувале у различитим индексима на основу датума.
    # 0 - онемогући
    # 1 - омогући
    #
    # Обавезно: не
    # Подразумевано:
    # HistoryStorageDateIndex=0

[comment]: # ({/8451a0a2-8451a0a2})

[comment]: # ({52123e63-5c4a5e3c})
#### Решавање проблема

Следећи кораци могу вам помоћи да решите проблеме са
Elasticsearch подешавањем:

1. Проверите да ли је мапирање исправно (GET захтев за тражену URL адресу индекса
 попут `http://localhost:9200/uint`).
2. Проверите да ли делови нису у неуспешном стању (поновно покретање Elasticsearch-а
 требало би да помогне).
3. Проверите конфигурацију Elasticsearch-а. Конфигурација би требало да дозволи
 приступ са Zabbix домаћина корисничког интерфејса и домаћина Zabbix сервера.
4. Проверите Elasticsearch логове.
5. [``LogSlowQueries``](/manual/appendix/config/zabbix_server#logslowqueries) може се користити за проверу спорих упита у бази података Elasticsearch.

Ако и даље имате проблема са инсталацијом
молимо Вас да направите извештај о грешци са свим информацијама са ове листе
(мапирање, евиденција грешака, конфигурација, верзија, итд.)

[comment]: # ({/52123e63-5c4a5e3c})
