Vector#
Vector - средство для агрегации и сбора log-файлов и метрик в реальном времени из различных источников в кластере DropApp. Это открытая платформа, которая собирает данные с контейнеров, приложений и систем в кластере с помощью специализированных агентов и отправляет их централизованно для дальнейшей обработки и анализа.
Vector использует множество стандартных протоколов и форматов данных, такие как syslog, Fluentd и Logstash.
Vector обеспечивает масштабируемость и гибкость работы с большим объемом log-файлов и метрик, что позволяет администраторам управлять их потоком и интегрировать с другими системами мониторинга и аналитики. Vector является независимой от облачных провайдеров платформой.
Сценарий использования Vector#
Создание конвейера данных для наблюдения#
Создайте файл конфигурации с именем
vector.toml:[sources.in] type = "stdin" [sinks.out] inputs = ["in"] type = "console" encoding.codec = "text"Каждый компонент имеет уникальный идентификатор и префикс с типом компонента, например
sourcesдля источника данных. Указанный источникsources.inиспользуетstdinисточник, который сообщает Vector о получении данных через стандартный ввод и имеет идентификаторin.Элемент
sinks.outв приведенном примере использует тип выводаconsole, который указывает Vector передавать данные в текстовом формате.Опция
inputsкомпонентаsinks.outсообщает Vector, откуда поступают события этого приемника. В приведенном примере события поступают от другого источника с идентификаторомin.Проверьте корректность работы Vector:
echo 'Hello world!' | vectorКоманда
echoотправляет один log-файл в Vector через стандартный ввод. Командаvectorзапускает Vector с ранее созданным конфигурационным файлом.Компонент
sources.inпринимает событие, которое было отправлено, затем отправляет компонентуsinks.out. Этот компонент возвращает событие обратно в консоль:... some logs ... Hello World!Следуйте последовательности действий для сборки обработки событий с использованием инструмента Syslog.
Добавьте файл конфигурации
vector.toml:[sources.generate_syslog] type = "demo_logs" format = "syslog" count = 100 [transforms.remap_syslog] inputs = [ "generate_syslog"] type = "remap" source = ''' structured = parse_syslog!(.message) . = merge(., structured) ''' [sinks.emit_syslog] inputs = ["remap_syslog"] type = "console" encoding.codec = "json"Первый компонент использует источник
demo_logs, который создает образцы данных log-файла, позволяющие моделировать различные типы событий в разных форматах. Параметрformatсообщает источникуdemo_logs, какой тип log-файлов следует создавать, а параметрcountсообщает источникуdemo_logs, сколько строк следует создавать, в приведенном примере -100.Второй компонент представляет собой преобразование
remap, которое позволяет анализировать, управлять и дополнять данные по мере их прохождения через Vector. В компонентеtransforms.remap_syslogуказанinputsпараметрgenerate_syslog, который будет получать события из источникаgenerate_syslog. Список преобразований переназначения (remapping transformations)Source, применяемых к каждому событию, которое получает Vector. В приведенном примере выполняется только операцияparse_syslog. Этой функции передается одно поле с именемmessage, которое содержит событиеSyslog. Это функция принимает сообщение в форматеSyslog, анализирует его содержимое и отправляет в виде структурированного события.В файле конфигурации использован компонент
sources.generated_syslog, а также обновлен идентификатор компонента-приемника доemit_syslog, и обновлен параметрinputsдля обработки событий, сгенерированных преобразованиемremap_syslog. Указан формат генерации JSON.Перезапустите Vector без передачи дополнительных данных в командной строке:
vector --restartЧтобы перезапустить программу Vector с использованием определенных параметров конфигурации, выполните команду:
vector --restart --param1 value1 --param2 value2В этом случае
value1иvalue2- значения параметров, которые будут использоваться при перезапуске программы Vector.Проверьте содержание файла
encoding.codec, в котором должны отображаться серии событий:{"appname":"benefritz","facility":"authpriv","hostname":"some.de","message":"A bug was encountered","msgid":"ID191","procid":9473,"severity":"crit","timestamp":"2023-05-20T19:38:55.329Z"} {"appname":"meln1ks","facility":"local1","hostname":"for.com","message":"A bug was encountered","msgid":"ID451","procid":484,"severity":"debug","timestamp":"2023-05-20T19:38:55.329Z"} {"appname":"shaneIxD","facility":"uucp","hostname":"random.com","message":"A bug was encountered","msgid":"ID428","procid":3093,"severity":"alert","timestamp":"2021-01-20T19:38:55.329Z"} ...Примечание
IP-адрес не существует и приведен для примера.
Анализ сообщений
Syslogпредставлен в виде упорядоченных событий, содержащих все поляSyslog. Инструмент Vecto позволяет получать log-файлы и события из десятков источников. Используя Vector и функцию преобразования исходных log-файлов для последующей обработки, можно изменять данные, добавлять поля для дополнения данных, преобразовывать журналы в метрики и удалять поля для автоматизации обработки данных наблюдаемости. Vector поддерживает функции направления и вывода событий в десятки мест назначения.