Перейти к основному содержимому
Версия: 4.5.X

File

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

/etc/echelon/komrad/komrad-file-collector.yaml
### schema: komrad/komrad-file-collector/4.1.33
# Идентификатор предприятия
tenant_id: 75
# Идентификатор установки
setup_id: komrad-production
# Метка безопасности, аналог Oracle Security Label
sl: 715
bus:
servers:
- nats://10.0.5.197:3490
user: komrad
password: pass
user-credentials: ""
tls:
disable: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
system-pool: false
min-version: "1.3"
client-auth: require-and-verify-client-cert
tuning:
# Возможность установить время ожидания при соединении.
connect-timeout: 10s
# Возможность установить максимальное количество попыток повторного подключения.
max-reconnects: 1000000
# Устанавливает максимальное количество времени, в течение которого мы будем ждать ответа.
max-wait: 0s
# Параметр для установки периода для клиентских команд ping.
ping-interval: 2m
# Возможность установить максимальное количество запросов ping,
# которые могут остаться без ответа сервера, прежде чем закрыть соединение.
max-pings-outstanding: 2
# Устанавливает максимальное количество незавершенных асинхронных публикаций,
# которые могут быть одновременно запущены.
publish-async-max-pending: 0
# Интервал переподключения.
reconnect-interval: 5s
# Возможность установить время ожидания между попытками повторного подключения.
reconnect-wait: 1s
# Устанавливает соединение в состояние повторного подключения, если оно не может подключиться.
retry-on-failed-connect: false
# Таймаут между попытками рестарта коллектора во время неустойчивой связи с центральным сервером КОМРАД
restart-timeout: 1s
# local_ip: 10.0.0.1
# Настройки пакетного сбора данных - включает накопление событий в пакеты
# для оптимизации скорости передачи информации.
# Например, увеличение параметра timeout до 3s и limit до 20000 позволяет достигать 100 000 EPS.
batching:
# предельный интервал времени накопления пакетов, по умолчанию 1 секунда
timeout: 1s
# предельный лимит событий в пакете, по умолчанию - 100
limit: 1000
# Настройки write-ahead-log (WAL) - механизма записи на диск событий
# в случае разрыва соединения с сетью. События пишутся на диск в сжатом виде, в случае
# восстановления соединения с сетью сжатые пакеты событий направляются в шину событий Комрад.
# Рекомендуется контролировать объем свободного дискового пространства на узле с коллектором/агентом.
wal:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.wal
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.wal
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-file-collector/.wal
# no-copy -- когда равен true включается режим оптимизации работы с памятью,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
no-copy: true
# segment-size -- размер одного сегмента WAL, по умолчанию 4 Кб,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
segment-size: 4MB
# max-length - максимальная длина WAL, если равно 0 длина не ограничена.
max-length: 0
# Настройки вывода логов приложения.
# Сервис может отправлять логи сразу в несколько целей -- файл, системный журнал ОС, консоль, syslog.
# Включить вывод логов в консоль для режима отладки приложения
# - filename: stdout
# format: color
# filter: ""
# levels: [all]
# Включить вывод логов в файл с ротацией.
# ВАЖНО: старые файлы с логами не удаляются, необходимо производить мониторинг использования диска.
# - filename: "/var/log/echelon/komrad/service.log"
# format: json
# возможно задать выражение для фильтрации выводимых логов
# filter: ""
# levels: [info, error, warn, panic, fatal]
# Отправлять критические сообщения в Журнал Windows.
# ВНИМАНИЕ: не стоит включать levels (info, warn, debug, error) в windowseventlog , это может
# крайне негативно сказаться на быстродействии и доступности узла.
# - filename: windowseventlog
# format: json
# levels: [panic, fatal]
log:
- filename: systemd/journal
format: json
filter: ""
levels:
- info
- error
- panic
- fatal
- warn
# Настройки дискового хранилища конфигурационной информации коллектора/агента
storage:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.storage
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.storage
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-file-collector/.storage
compress: false
# Включить режим синхронной записи каждого результата на диск, по-умолчанию отключено
sync-writes: false
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-file-collector/geoip/db.mmdb
# Проверка на корректность базы данных geoIP при инициализации geodata.
# Полезная опция, чтобы удостоверится, что база mmdb не содержит ошибок.
# Однако верификация длится от 20 секунд до 2х минут в зависимости от ресурсов
# и размера базы геоданных. По умолчанию опция отключена.
verify-on-start: false
# Отключить запись исходного текста события в поле Raw.
# Большинство требований регулятора требуют сохранять текст исходного события.
# Сохранение исходного текста события влияет на размер БД для хранения событий,
# возможно повышение требований в 2-10 раз.
# Коллекторы WMI, SQL, SNMP, xFLOW всё, что получают от протоколов источников
# сбора сохраняют в нормализованные поля события. Поле Raw заполняется
# синтетическими данными -- нормализованные поля в формате JSON.
# Рекомендуется установить `disable-raw-field: true` для коллекторов типа WMI, SQL, SNMP, xFLOW
# для сохранения затрат на хранение избыточных данных.
# Коллекторы Syslog и File имеют доступ к исходному тексту события, отключать запись в Raw
# для этих коллекторов невозможно.
disable-raw-field: false
# Использовать при работе только в локальном автономном режиме
offline: false
plugins: []
events_file: ""

Подключение нового файлового коллектора

Предварительные условия:

Для установки файлового коллектора на определенный узел, необходимо:

  1. На узле-источнике создать директорию, в которую необходимо переместить deb-пакет

    komrad-file-collector*.deb из дистрибутива KOMRAD

  2. Установить из папки Файловый коллектор командой:

    sudo dpkg -i ./komrad-file-collector*.deb
  3. Открыть файл komrad-file-collector.yaml командой:

    sudo nano /etc/echelon/komrad/komrad-file-collector.yaml
  4. Отредактировать параметр bus-url, задав IP-адрес сервера KOMRAD:

    bus: 
    servers:
    - nats://IP_ KOMRAD»:3490
  5. Сохранить файл и перезагрузить Файловый коллектор командой:

    sudo systemctl restart komrad-file-collector.service
  6. Новый файловый коллектор отобразится в списке коллекторов в веб-интерфейсе

Подключение новых источников событий

Расположение: manage ⇒ Настройки коллекторов ⇒ Файловый коллектор

Действия по подключению:

  1. Кликните по файловому коллектору
  2. На вкладке «Источники» нажмите на кнопку «Добавить». Справа появится форма создания нового источника для файлового коллектора
  3. Задайте параметры подключения на вкладке «Подключение» формы создания нового источника:
    • Название - название узла источника
    • Описание - описание источника
    • Протокол - протокол сбора: SFTP/Локальная машина
    • Актив - IP-адрес узла источника
    • Авторизация
      • Порт
      • Логин и пароль учетной записи, также поддерживается возможность авторизации по ключу (сертификату)

Сбор событий

  1. Добавьте необходимые для передачи в KOMRAD файлы/папки, задав полные пути к ним на вкладке «Сбор событий»
  2. Включите сбор для каждого добавленного файла/папки
  3. Укажите дополнительные параметры сбора
  4. Включите коллектор, если он был выключен или перезагрузите, если он был включен
  5. На узле-источнике убедитесь, что события регистрируются в указанных файлах
  6. Для просмотра событий, поступающих от подключенного источника в KOMRAD, перейдите на дашборд событий в реальном времени: События ⇒ События в реальном времени

Дополнительно:

  1. Для обеспечения возможности подключения с использованием ключа (сертификата) необходимо сохранить его копию в директории $HOME/.ssh
  2. Необходимо удостоверится, что у файла, который планируется собирать файловым коллектором, настроено право на чтение пользователем, с помощью которого будет осуществляться сбор

Дополнительные параметры сбора

У файлового коллектора гибкие возможности настройки, ниже указаны доступные настройки.

"ID": "",

"Reader": {

"Backoff": {

"Init": "PT2S", //Начальный интервал повторного опроса файла, каждый раз увеличивается в 2 раза, если в файл остался неизменным (до достижения максимального интервала)

"Max": "PT10S" // Максимальный интервал повторного опроса файла

//При значении "Init": "PT10S" и "Max": "PT20S" в логах коллектора Start next scan идет каждые 10 секунд

*},

"BufferSize": 16384, // Размер буфера, используемый для чтения файла (в байтах)

"Encoding": "", // При значении "Encoding": "utf-8" русские буквы распознаются, буквы английского алфавита приходят в виде значков. Примеры: plain, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk, hz-gb-2312, euc-kr, euc-jp, iso-2022-jp, shift-jis

"ExcludeLines": null, // Экспериментальная функция,тесты не подтвердили работоспособность. Список регулярных выражений, по которым игнорируются строки (по умолчанию обрабатываются все строки) // Регулярные выражения должны быть в виде в виде массива "[]". Проверка: при значении "ExcludeLines": ["123"] отправляем событие 123 и 456. Результат: оба события пришли, хотя событие 123 должно было отброситься. В логах сообщение Drop line as it does not match any of the include patterns. В документации к filebeat описано так: сначала парсер Multiline собирает все подходящие события в одно, а затем уже происходит отбор по значению параметра ExcludeLines или IncludeLines. Кроме того, если прописать регулярные выражения и для ExcludeLines, и для IncludeLines, то IncludeLines выполняется первым. // https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-stdin.html

"IncludeLines": null, // Экспериментальная функция,тесты не подтвердили работоспособность. Список регулярных выражений, по которым отбираются строки (по умолчанию обрабатываются все строки) // Регулярные выражения должны быть в виде в виде массива. Проверка: при значении "IncludeLines": ["123"] отправляем событие 123 и 456. Результат: событие не пришло, хотя должно было прийти. В логах сообщение Drop line as it does not match any of the include patterns

"LineTerminator": "auto", // Экспериментальная функция,тесты не подтвердили работоспособность. Разделитель строк. В документации к failbeat предлагаются следующие значения для поля "LineTerminator": auto, line_feed, vertical_tab, form_feed, carriage_return, carriage_return_line_feed, next_line, line_separator, paragraph_separator, null_terminator. Проверено при значении vertical_tab и null_terminator - источник можно сохранить, ошибок нет, но события из отслеживаемого файла перестают приходить до тех пор, пока не поставить обратно значение auto

"MaxBytes": 10485760, // Максимальный размер одного события (в байтах). Проверено при значении 8 - приходят события до 8 символов

"Tail": false, // Если для этого параметра установлено значение true, коллектор начинает читать новые файлы с конца каждого файла, а не с начала. Этот параметр применяется к новым файлам, которые коллектор еще не обработал. Если вы ранее запускали Filebeat и состояние файла уже сохранилось, оно tail_filesне будет применяться

"Parsers": {

"MaxBytes": 10485760,

"Parsers": [ {

"Kind": "multiline",

// Тип парсера =multiline, =ndjson, =container

// Документация для multiline: https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html

"Multiline":

{

// Парсер для агрегации многострочных событий

"Type": "count_mode", // Тип работы: ="pattern_mode"-по шаблону, ="count_mode"-по количеству строк, ="while_pattern_mode"-по шаблону. "Сount_mode" (работает) создает события из определенного количества строк, заданного в параметре LinesCount. "Pattern_mode" (работает) поддерживает регулярные выражения (Pattern) и в зависимости от настроек Negate и Match, строки соответствующие указанному регулярному выражению, считаются продолжением предыдущей строки, либо началом нового многострочного события. "While_pattern_mode" (работает) поддерживает регулярные выражения (Pattern), но не применяет опцию Match

"Negate": false, // Опция инвертирования pattern и match

"Match": "after", // Параметр объединения строк в событие ="after"-по последнему совпадению, ="before"-до следующего совпадения

"MaxLines": null, // Лимит по числу строк в одном событии Проверено при "Type": "count_mode", "LinesCount": 20, MaxLines": 5. Только 5 строк объединяются в одно событие, а не 20

"Pattern": "", // Шаблон регулярного выражения для агрегации событий. Примеры: "[[:space:]]" - строки с пробелом в начале сроки, "[" - строки с [ в начале строки

"Timeout": null, //Экспериментальная функция,тесты не подтвердили работоспособность. Таймаут ожидания строк события. При его достижении отправляется событие, не дожидаясь шаблона нового события При значении "LinesCount": 10 и "Timeout": "PT50S" отправляю 5 строк. Событие формируется раньше завершения таймаута из 5 строк (хотя событие должно сформироваться или по завершении таймаута из имеющегося количества строк или после поступления 10 строк)

"FlushPattern": "", //Шаблон, по которому строка будет сброшена из памяти, завершая многострочное событие // работает. При "Type": pattern_mode, "Negate": true, "Match": "after", "Pattern": "Start new event", "FlushPattern": "End event" несколько строк объединяются в одно событие только в режиме "pattern_mode"

"LinesCount": 1, // Кол-во строк для объединения в одно событие При "Type": "count_mode", "LinesCount": 5, 5 строк объединяются в одно событие

"SkipNewLine": false // Опция объединения строк без переноса строки (разделителя "\n") Если в отслеживаемый файл отправить строки adm и in, то получится событие "admin", а не "adm in"

,

"NDJSON":

{ "MessageKey": "max-size", "DocumentID": "", "KeysUnderRoot": false, "OverwriteKeys": false, "AddErrorKey": false, "IgnoreDecodingError": false, "ExpandKeys": false, "Field": "", "Target": "" }

,

"Container":
{ // Парсер логов контейнеров. Извлекает сообщения и timestamps "Stream": "all", // Потоки чтения: ="all", ="stdout", ="stderr" "Format": "cri" // Формат логов: ="auto", ="docker", ="cri" }

}

],

"Suffix": ""

}

},

"Paths": [], Экспериментальная функция,тесты не подтвердили работоспособность. чтобы путь из Доп. параметров работал, необходимо указать любой валидный путь к файлу во вкладке Сбор событий (путь1), затем указать путь во вкладке Доп. параметры (путь 2), после этого сохранить источник. Тогда будут работать путь1 и путь2. После сохранения источника путь из вкладки Сбор событий можно удалить, а путь из вкладки Доп. параметры оставить. Тогда будет работать только путь2. Если же при создании источника прописать путь только во вкладке Доп. параметры, то события приходить не будут. Во вкладке Доп. параметры можно продублировать путь другого источника, тогда события будут дублироваться. В качестве пути можно указать любые символы, при этом коллектор работает исправно. При редактировании параметра Paths уже созданного источника не активируется кнопка Сохранить. Нужно поменять какой-то параметр из другой вкладки, а после этого уже сохранить изменения во вкладке Доп. параметры

"IgnoreOldPaths": null,

"Close": {

"OnStateChange":

{ "CheckInterval": "PT5S",

"Inactive": "PT10S", Таймаут закрытия дескриптора файла (с момента последнего обновления файла)

"Removed": true, // Остановить обработчик при закрытии файла

"Renamed": false // Остановить обработчик при переименовании файла }

,

"Reader":

{ "AfterInterval": "P0D",

// Таймаут закрытия дескриптора файла (со старта работы обработчика) "OnEOF": false // Остановить обработчик при достижении конца файла (возможна потеря данных) }

},

"FileWatcher": {

"Interval": "P0D", // Интервал поиска новых файлов в отслеживаемой директории

"ResendOnModTime": null, // Повторно обрабатывать файл, если его размер остался прежним, а время модификации изменилось

"Scanner":

{ "ExcludedFiles": null, // Список регулярных выражений, по которым игнорируются файлы (по умолчанию обрабатываются все файлы) Необходимо заполнять регулярными выражениями в виде массива. Если параметр "ExcludedFiles" равен ["22.txt$"], то коллектор не отслеживает файлы с названиями 22.txt 122.txt, но отслеживает файлы с названиями 2211.txt 22.json

"IncludedFiles": null, // Список регулярных выражений, по которым отбираются файлы (по умолчанию обрабатываются все файлы) Необходимо заполнять регулярными выражениями в виде массива. Если параметр "IncludedFiles" равен ["22.txt$"], то коллектор отслеживает файлы с названиями 22.txt 122.txt, но не отслеживает файлы с названиями 2211.txt 22.json

"Symlinks": null, // Сбор символических ссылок в дополнение к обычным файлам. Прописан путь /etc/file-collector/symlink

"RecursiveGlob": null // Включить рекурсивное отслеживание файлов в указанной директории При "RecursiveGlob": true приходят события об изменении файлов во вложенных директориях, при значении false - не приходят. Нужно прописывать уровень вложенности в пути отслеживания /etc/file-collector/dir1/*** }

},

"FileIdentity":

{ // Эти параметры отвечают за методы обнаружения файлов "Kind": "path", // Способ обнаружения файлов: ="native"-по индексным дескрипторам, ="path"-по путям, ="inode_marker" "InodeMarkerIdentifier": null // Маркер для способа обнаружения ="inode_marker" }

,

"CleanTimeout": "P0D", // Очистка из реестра при истечении таймаута

"CleanInactive": "P0D", // Очистка из реестра при истечении таймаута (с момента последнего обновления файла)

"CleanRemoved": null, // Очистка из реестра при удалении файла

"HarvesterLimit": 0,

"IgnoreOlder": "P0D", // Игнорировать файлы, измененные до выставленного значения (Отключено="P0D")

"IgnoreInactive": null, // Игнорировать файлы, измененные до: ="since_first_start"-первого старта источника, ="since_last_start"-последнего старта источника (не уверен, что эта опция будет корректно работать)

"Rotation":

{ // Дополнительные параметры ротации файлов. По умолчанию работает ротация с перемещением старого файла на и заменой на новый пустой.

"Name": "",

"Strategy": "", // ="copytruncate"-копируется содержимое активного файла, затем файл очищается. Для этой стратегии необходим параметр suffixRegex

"SuffixRegex": "", // Суффикс для отличия активных от rotate файлов (может быть числом или датой)

"DateFormat": "" // Формат даты при использовании даты в suffixRegex }

,

"MetaFields":

{ "Source": "" }

,

"AlertFileChanges": true, // Отслеживание и создание событий при изменении файлов (create/move/delete файла). При значении true приходят события об изменении, создании, перемещении файлов в отслеживаемой папке, при значении false - нет

"ConnectType": "",

"SSHParams": null

Удаление

Удалить файловый коллектор можно с помощью команды:

sudo dpkg -P komrad-file-collector