Подготовка хранилища
Условные обозначения
INDEX_NAME
- название индекса, в который будет производиться запись (например, параметрindex
в output плагине Logstash пайплайна).
Предполагается, что к моменту выполнения нижеприведенных инструкций коннектор для сбора данных уже настроен. Поступление данных из источника временно приостановлено на момент настройки. Если сбор данных еще не был настроен, то рекомендуется сперва ознакомиться с подробностями по настройке конфигурации сбора данных в следующих разделах документации: Агентский сбор данных и Безагентский сбор данных.
Настройка шаблона индекса
Создание шаблона индекса
На первом этапе необходимо создать шаблон индекса, который автоматически определяет параметры для всех новых индексов, относящихся к источнику данных. В шаблоне необходимо задать маску названия индекса в формате <INDEX_NAME>-*
, чтобы она охватывала все автоматически создаваемые в процессе ротации индексы (например, <INDEX_NAME>-000001
, <INDEX_NAME>-000002
и т.д.). В случае использования механизма ротации (rollover), необходимо задать rollover alias.
Название alias необязательно должно совпадать с названием индекса, но для упрощения настройки и соблюдения единого подхода к именованию рекомендуется использовать <INDEX_NAME>
в качестве названия alias. Название шаблона так же может быть произвольным, однако часто в качестве названия используется суффикс <INDEX_NAME>_template
для удобства идентификации.
Параметры количества реплик и первичных шардов приведены для примера - в рабочем окружении они должны подбираться индивидуально в зависимости от объема поступаемых от источника данных, требований к производительности и уровню отказоустойчивости. Значение параметра index.routing.allocation.include.routing_mode
должно соответствовать значению атрибута routing_mode
узлов кластера, на которых должен разместиться индекс при его создании. Проверить атрибуты узлов кластера вы можете командой GET _cat/nodeattrs
.
Для создания шаблона откройте Консоль разработчика
(Навигационное меню
- Параметры системы
- Консоль разработчика
) и выполните следующую команду:
PUT _index_template/<INDEX_NAME>_template
{
"index_patterns": [
"<INDEX_NAME>-*"
],
"template": {
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1,
"index": {
"routing": {
"allocation": {
"include": {
"routing_mode": "hot"
}
}
},
"opendistro": {
"index_state_management": {
"rollover_alias": "<INDEX_NAME>"
}
}
}
}
}
}
После выполнения команды результат операции отобразится в правой панели:
{
"acknowledged": true
}
Альтернативный способ создания шаблона — через графический интерфейс. Для этого откройте раздел Шаблоны
(Навигационное меню
- Параметры системы
- Управление индексами
- Шаблоны
), нажмите Создать шаблон
и укажите параметры, описанные выше.
Извлечение маппинга индекса
При подключении источника рекомендуется уточнять типы полей индекса (маппинг). Для сначала необходимо получить текущий маппинг индекса, который был автоматически создан на этапе тестирование подключения источника. Для этого откройте Консоль разработчика
(Навигационное меню
- Параметры системы
- Консоль разработчика
) и выполните следующую команду:
GET <INDEX_NAME>/_mapping
В приведенной выше команде обращение осуществляется напрямую к <INDEX_NAME>
, так как подразумевается, что на этапе тестирование подключения источника, пока еще не был настроен алиас и ротация индекса — данные записывались непосредственно в индекс без добавления суффикса партиции.
В результатах запроса скопируйте содержимое поля mappings
— оно потребуется для дальнейшей настройки.
Настройка маппинга в шаблоне
Перейдите в раздел Шаблоны
(Навигационное меню
- Параметры системы
- Управление индексами
- Шаблоны
), найдите ранее созданный шаблон с именем <INDEX_NAME>_template
и откройте его. Перейдите во вкладку Конфигурация — здесь можно изменить параметры, заданные при создании шаблона через консоль разработчика. Например, вы можете задать параметр приоритет, если он не был указан ранее.
Перейдите в раздел Index Mapping
, выберите вкладку Редактор JSON
и вставьте содержимое, ранее скопированное из поля mappings
.
Затем переключитесь на вкладку Визуальный редактор
- появится возможность вручную указать тип поля
для каждого поля. Пример настройки:
Рекомендации по типам полей:
- рекомендуется использовать тип
keyword
для всех текстовых полей, за исключением тех, которые содержат длинные наборы слов (например,message
). В таких случаях следует использовать типtext
- для временных меток, таких как
@timestamp
, используйте типdate
- для больших целочисленных значений —
long
- для дробных значений —
double
- для ip адресов —
ip
По полям типа text
невозможно строить агрегации и выполнять wildcard поиск (поиск по маске с использованием *
).
Дополнительную информацию по настройке типов полей и индексов можно найти в соответствующем разделе настройки индексов.
Настройка политики с rollover для подготовки индекса
Подробную инструкцию по созданию и настройке политики можно найти в данной статье.
Маска индексов должна быть указана в формате <INDEX_NAME>-*
. Это необходимо для применения политики к новыми индексами, попадающих под заданную маску.
Создание первого индекса
Перед созданием первого индекса для источника, выполните удаление старого индекса, который использовался на этапе тестирования:
DELETE <INDEX_NAME>
Перейдите в Консоль разработчика
(Навигационное меню
- Параметры системы
- Консоль разработчика
) и выполните следующую команду для создания первого индекса, который будет управляться ранее настроенной политикой:
PUT <INDEX_NAME>-000001
{
"aliases": {
"<INDEX_NAME>": {
"is_write_index": true
}
}
}
Настройка паттерна индекса
Перед настройкой паттерна индекса необходимо включить logstash, возобновив отправку данных. Это необходимо для того чтобы в паттерне индекса была возможность выбрать временное конкретное поле. В паттерне индекса информация о полях станет доступна только после попадания данных в индекс.
Перезапустите Logstash в терминале на соответствующем хосте с помощью следующей команды:
systemctl restart logstash
Если не указывать временное поле в паттерне индекса, поиск по индексу не будет учитывать указываемый вами временной интервал.
Перейдите в раздел Паттерны индексов
(Навигационное меню
- Параметры системы
- Настройки модулей
- OPENSEARCH
- Паттерны индексов
), нажмите Создать паттерн индекса
и введите имя вашего <INDEX_NAME>
. На следующем шаге выберите временного поле (например @timestamp
), затем нажмите Создать паттерн индекса
для завершения.
На этом этапе подготовка индексов для использования в хранилище данных завершена.
Рекомендуется убедиться, что поток данных от источника не оказывает отрицательного влияния ни на слой сбора данных, ни на хранилище данных, а также отсутствуют ошибки индексации. С возможными проблемами вы можете ознакомиться в статье по траблшутингу проблем сбора данных.