3 Установка Elasticsearch

Поддержка Elasticsearch экспериментальная! (поддерживается начиная с Zabbix 3.4.5)
Процедура установки, которая рассматривается в этом разделе, применима к следующим версиям Elasticsearch: 5.0.x -→ 6.1.x. В случае, если используется более старая или более новая версия Elasticsearch, некоторый функционал может не работать должным образом.

Zabbix недавно начал поддерживать хранение данных истории в Elasticsearch вместо базы данных. Теперь пользователям предоставляется возможность выбора места хранения данных истории между совместимой базой данных и Elasticsearch.

Если все данные истории хранятся в Elasticsearch, динамика изменений не будет вычисляться, как и записываться в базу данных. Поскольку динамика изменений не вычисляется и не сохраняется может потребоваться увеличение периода хранения данных истории.

Настройка

Для обеспечения надлежащей связи между всеми участвующими элементами убедитесь, что параметры файла конфигурации сервера и файл конфигурации веб-интерфейса настроены должным образом.

Zabbix сервер и веб-интерфейс

Выдержка из файла конфигурации 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,text

Пример значений параметров, которые требуется указать в файле конфигурации Zabbix сервера:

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

Подобная конфигурация заставит Zabbix сервер хранить значения истории числовых типов в соответствующей базе данных и текстовых данных истории в Elasticsearch.

Elasticsearch поддерживает следующие типы элементов данных:

uint,dbl,str,log,text

Разъяснение поддерживаемых типов элементов данных:

Тип значения элемента данных Таблица в базе данных Тип в 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 веб-интерфейса:

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

Подобная конфигурация заставит хранить значения истории Текст, Символ и Журнал (лог) в Elasticsearch.

Также требуется сделать $HISTORY глобальной переменной в conf/zabbix.conf.php, чтобы убедиться, что все работает должным образом (смотрите файл conf/zabbix.conf.php.example как это сделать):

// Zabbix GUI configuration file.
       global $DB, $HISTORY;
Установка Elasticsearch и создание сопоставления

Последними двумя шагами, чтобы все заработало, нужно установить сам Elasticsearch и создать процесс сопоставления.

Чтобы установить Elasticsearch, пожалуйста, обратитесь к инструкции по установке Elasticsearch [en].

Сопоставление является структурой данных в Elasticsearch (аналогично таблице в базе данных). Сопоставления по всем типам данных истории доступны здесь: database/elasticsearch/elasticsearch.map.

Создание сопоставления обязательно. Некоторый функционал будет поломан, если сопоставление не создано согласно этой инструкции.

Для создания сопоставления для типа text отправьте следующий запрос в Elasticsearch:

curl -X PUT \
        http://ваш-elasticsearch.здесь:9200/text \
        -H 'content-type:application/json' \
        -d '{
        "settings" : {
           "index" : {
              "number_of_replicas" : 1,
              "number_of_shards" : 5
           }
        },
        "mappings" : {
           "values" : {
              "properties" : {
                 "itemid" : {
                    "type" : "long"
                 },
                 "clock" : {
                    "format" : "epoch_second",
                    "type" : "date"
                 },
                 "value" : {
                    "fields" : {
                       "analyzed" : {
                          "index" : true,
                          "type" : "text",
                          "analyzer" : "standard"
                       }
                    },
                    "index" : false,
                    "type" : "text"
                 }
              }
           }
        }
       }'

Похожий запрос требуется выполнить для создания сопоставлений по значениям истории Символ и Журнал (лог) с соответствующим исправлением типа.

Чтобы работать с Elasticsearch, пожалуйста, обратитесь к странице требований для получения более подробной информации.

Очистка истории не удаляет никакие данные с Elasticsearch.

Решение проблем

Следующие шаги могут помочь вам в решении проблем с установкой Elasticsearch:

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

Если у вас по-прежнему возникают проблемы с вашей инсталляцией, пожалуйста, создайте отчет об ошибке со всем информацией из этого списка (сопоставления, журналы ошибок, настройка, версия и так далее)