Vector#

Vector - средство для агрегации и сбора log-файлов и метрик в реальном времени из различных источников в кластере DropApp. Это открытая платформа, которая собирает данные с контейнеров, приложений и систем в кластере с помощью специализированных агентов и отправляет их централизованно для дальнейшей обработки и анализа.

Vector использует множество стандартных протоколов и форматов данных, такие как syslog, Fluentd и Logstash.

Vector обеспечивает масштабируемость и гибкость работы с большим объемом log-файлов и метрик, что позволяет администраторам управлять их потоком и интегрировать с другими системами мониторинга и аналитики. Vector является независимой от облачных провайдеров платформой.

Сценарий использования Vector#

Создание конвейера данных для наблюдения#

  1. Создайте файл конфигурации с именем 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.

  2. Проверьте корректность работы Vector:

    echo 'Hello world!' | vector
    

    Команда echo отправляет один log-файл в Vector через стандартный ввод. Команда vector запускает Vector с ранее созданным конфигурационным файлом.

    Компонент sources.in принимает событие, которое было отправлено, затем отправляет компоненту sinks.out. Этот компонент возвращает событие обратно в консоль:

    ... some logs ...
    Hello World!
    

    Следуйте последовательности действий для сборки обработки событий с использованием инструмента Syslog.

  3. Добавьте файл конфигурации 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.

  4. Перезапустите Vector без передачи дополнительных данных в командной строке:

    vector --restart
    
  5. Чтобы перезапустить программу Vector с использованием определенных параметров конфигурации, выполните команду:

    vector --restart --param1 value1 --param2 value2
    

    В этом случае value1 и value2 - значения параметров, которые будут использоваться при перезапуске программы Vector.

  6. Проверьте содержание файла 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 поддерживает функции направления и вывода событий в десятки мест назначения.