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

7 Elasticsearch подешавање

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

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

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

Конфигурација

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

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;

Инсталирање Elasticsearch-а и креирање мапирања

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

Да бисте инсталирали Elasticsearch, погледајте Elasticsearch водич за инсталацију.

Мапирање је структура података у Elasticsearch-у (слично atable-у у бази података). Мапирање за све типове историјских података је доступно овде: 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-ом погледајте Захтеве за додатне информације.

Housekeeper не брише никакве податке из 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" да би се подударало са називом индекса и да би се поставило валидно мапирање, које се може преузети из database/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 index:

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 сервера:

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

Решавање проблема

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

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

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