Управление конфигурациями Logstash
Описание
Роль управления конфигурациями Logstash не включает перезагрузку сервиса Logstash, не изменяет параметры в файле jvm.options
, в том числе не редактирует размер heap.
Роль конфигурирует следующие файлы:
logstash.yml
pipelines.yml
- конфигурационные файлы пайплайнов
При изменении в конфигурационных файлах соз даются резервные копии. Также осуществляется поиск резервных копий и производится удаление бэкапов файлов старше 1 дня.
При отключении пайплайна на хосте конфигурационный файл переименовывается с расширением .bkp
и не удаляется.
Параметры роли
Значения по умолчанию указаны относительно рекомендаций Smart Monitor.
var_logstash_pipelines_list
Объект (YAML) с описанием параметров пайплайнов Logstash. Обычно используется для группы хостов (влияет на приоритеты и последовательность объединения параметров).
Поддерживает объединение с параметрами, начинающимися на var_logstash_pipelines_list_
, например:
var_logstash_pipelines_list_syslog
var_logstash_pipelines_list_win_log
host_var_logstash_pipelines_list
Объект (YAML) с описанием параметров пайплайнов Logstash. Обычно используется для описания параметров хоста (влияет на приоритеты и последовательность объединения параметров). Поддерживает объединение с параметрами, начинающимися на host_var_logstash_pipelines_list_
, например:
host_var_logstash_pipelines_list_syslog
host_var_logstash_pipelines_list_win_log
var_logstash_files
Объект (YAML) с основными параметрами Logstash
Переменная | Значение по умолчанию | Описание |
---|---|---|
var_logstash_files.path_conf | директория расположения конфигурации Logstash, по умолчанию | /app/logstash/config |
var_logstash_files.path_log | директория нахождения логов Logstash, по умолчанию | /app/logs/logstash/logstash-plain.log |
var_logstash_files.dir_subcfg | названия директории расположения файлов конфигураций пайплайнов, обычно | conf.d |
var_logstash_files.owner | имя владельца файлов, по умолчанию | "logstash" |
var_logstash_files.group | имя группы владельцев файлов, по умолчанию | "logstash" |
var_logstash_files.mode | привилегии на создаваемые файлы, по умолчанию | "0644" |
var_logstash_files.folder_mode | привилегии на создаваемые директории, по умолчанию | "0755" |
Параметры файла logstash.yml
Далее следуют параметры (объекты YAML), относящиеся к глобальным параметрам Logstash и прописываются в файле logstash.yml
. Разделено на 5 объектов только для группировки части параметров по "общим признакам" и соответствующим комментарием в файле logstash.yml
.
var_logstash_node_settings
Объект (YAML) с параметрами, относящиеся к текущему узлу, обычно включает следующие параметры:
Переменная | Значение по умолчанию | Описание |
---|---|---|
node.name | имя узла, значение по умолчанию | smosed-logstash |
config.reload.automatic | перезагружать ли автоматически конфигурацию Logstash pipeline | false |
config.reload.interval | время проверки изменения конфигураций для автоматического применения конфигурации | 3s |
var_logstash_path_settings
Объект (YAML) с параметрами, относящиеся к текущему узлу и указанию директорий, обычно включает следующие параметры:
Переменная | Значение по умолчанию | Описание |
---|---|---|
path.data | директория расположения данных | /app/data/logstash |
path.logs | директория расположения логов | /app/logs/logstash |
var_logstash_pipeline_settings
Объект (YAML) с параметрами, относящиеся к глобальным параметрам pipeline, обычно включает следующие параметры:
Переменная | Значение по умолчанию | Описание |
---|---|---|
pipeline.ordered | управление порядком событий пайплайна | auto |
pipeline.separate_logs | сохранение логов пайплайнов в отдельные файлы | true |
var_logstash_queue_settings
Объект (YAML) с параметрами, относящиеся к параметрам работы с очередями, обычно включает следующие параметры:
Переменная | Значение по умолчанию | Описание |
---|---|---|
queue.type | тип буфера для хранения буфера событий | memory |
queue.page_capacity | размер страницы при файловом типе буфера событий | 64mb |
queue.max_events | количество необработанных событий в очереди для включения буфера файлового типа | 0 |
queue.max_bytes | максимальное значение буфера файлового типа в байтах | 1024mb |
queue.checkpoint.acks | максимальное количество событий с подтверждением перед форсированием при файловом типе очереди | 1024 |
queue.checkpoint.writes | максимальное количество записанных событий перед форсированием при файловом типе очереди | 1024 |
queue.checkpoint.interval | интервал в миллисекундах принудительной установки контрольной точки при файловом типе очереди | 1000 |
var_logstash_dead_letter_queue_settings
Объект (YAML) с параметрами, относящиеся к параметрам работы с очередью недоставленных сообщений, обычно включает следующие параметры:
Переменная | Значение по умолчанию | Описание |
---|---|---|
dead_letter_queue.enable | включает очередь для недоставленных сообщений | false |
dead_letter_queue.max_bytes | размер очереди недоставленных сообщений в байтах | 1024mb |
dead_letter_queue.flush_interval | период записи очереди в файл в миллисекундах | 5000 |
Глобальные параметры Logstash
Глобальные параметры Logstash располагаются в файле <PATH_TO_LOGSTASH_CONFIG>/logstash.yml
, для удобства визуально разбиты на 5 групп:
- настройки узла (
var_logstash_node_settings
) - настройки директорий (
var_logstash_path_settings
) - настройки пайплайнов (
var_logstash_pipeline_settings
) - настройки очередей (
var_logstash_queue_settings
) - настройки очередей недоставленных сообщений (
var_logstash_dead_letter_queue_settings
)
Если планируется изменить какой-нибудь параметр в группе, то нужно будет указать все из значения по умолчанию и изменить необходимые. Указывать параметры нужно по правилам YAML. Некоторые параметры имеют значения по умолчанию в логике Logstash, подробнее можно прочитать в официальной документации.
Например:
var_logstash_queue_settings:
queue.type: persistent
queue.page_capacity: 64mb
queue.max_events: 0
queue.max_bytes: 1024mb
queue.checkpoint.ack s: 1024
queue.checkpoint.writes: 1024
queue.checkpoint.interval: 1000
Будет использован другой тип очереди с перечисленными параметрами. Если не указать ни одной переменной группы, то настройка logstash.yml
будет игнорироваться.
Рекомендация по структуре файлов
Согласно правилам Ansible можно вынести параметры для группы хостов в директорию group_vars
и для определённых хостов в директорию host_vars
. Внутри этих директорий может быть файл с одноименным именем группы или хоста соответственно.
Вместо файла может быть одноименная директория, внутри которой могут располагаться файлы, которые по правилам Ansible соберутся в единый файл при выполнении плейбука.
Например, есть файл инвентаризации hosts, в нём есть описание группы _example_
, а также __example_
. Во втором случае все параметры указаны в одном файле, в первом - разбиты на файлы в одноименной директории. В примере для хостов не используются директории, только файлы с параметрами, относящиеся к определённому хосту.
.
├── group_vars
│ ├── __example_
│ └── _example_
│ ├── connect
│ ├── logstash_base
│ ├── pipeline__default
│ ├── pipeline_apache
│ ├── pipeline_cisco_ios
│ └── pipeline_os
├── host_vars
│ ├── test1
│ ├── test2
│ ├── test3
│ └── test4
└── hosts
Мы рекомендуем указывать дополнительные параметры для групп и хостов в директориях и разбивать параметры на файлы
Настройки каждого пайплайна рекомендуется выносить в отдельный файл, как приведено выше в примере. Называть файлы рекомендуется с ключевого слова pipeline_
, далее должно следовать имя пайплайна (id
в pipelines.yml
).
Общие параметры пайплайнов вынесены в отдельный файл pipeline__default
, использовано специально двойное подчёркивание, чтобы файл выделялся в списке. Подробнее по общим параметрам в следующем разделе.
Описать определённый пайплайн можно в параметрах (подробнее в следующем разделе) или создать шаблон в формате JINJA2 в директории templates/conf.d
, например, в примере ниже при указании пайплайна wineventlog
будет использован шаблон файла wineventlog.conf.j2
. Так же здесь присутствует шаблон для пайплайна test
, для всех остальных пайплайнов будет использован шаблон default_pipeline.j2
.
.
└── templates
├── conf.d
│ ├── common
│ ├── default_pipeline.j2
│ ├── test.conf.j2
│ └── wineventlog.conf.j2
├── logstash.yml.j2
└── pipelines.yml.j2
Пример содержимого файла шаблона пайплайна:
input {
{% include 'common/input.j2' %}
}
filter {
json{
source => "message"
}
date {
match => [ "timestamp" , "ISO8601"]
}
mutate{
remove_field => ["path"]
}
}
output {
{% include 'common/output.j2' %}
}