Vector#
Vector - средство для агрегации и сбора log-файлов и метрик в реальном времени из различных источников в кластере DropApp. Это открытая платформа, которая собирает данные с контейнеров, приложений и систем в кластере с помощью специализированных агентов и отправляет их централизованно для дальнейшей обработки и анализа.
Vector использует множество стандартных протоколов и форматов данных, такие как syslog, Fluentd и Logstash.
Vector обеспечивает масштабируемость и гибкость работы с большим объемом log-файлов и метрик, что позволяет администраторам управлять их потоком и интегрировать с другими системами мониторинга и аналитики. Vector является независимой от облачных провайдеров платформой.
Сценарий использования Vector#
Создание конвейера данных для наблюдения#
Примечание
В приведенном сценарии при запуске Vector указан namespace vector - название может быть изменено на усмотрение администратора.
Создайте namespace
vector:kubectl create namespace --dry-run=client -o yaml vector > namespace.yamlВыполните команду для развертывания Vector в кластере DropApp:
vector agent deploy --config <Path_to_the_configuration_file>Дождитесь завершения процесса развертывания.
Проверьте статус агента с помощью команды:
vector agent statusСоздайте файл конфигурации с именем
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 поддерживает функции направления и вывода событий в десятки мест назначения.
Vector Journalctl#
Journalctl – это утилита для просмотра содержимого журнала systemd, который ведется службой Journald. Для отображения всех собранных log-файлов без какой-либо фильтрации выполните команду без опций:
journalctl
Пример вывода команды:

Journald – это программа, собирающая и записывающая сообщения log-файлов по всей системе. Это данные о загрузке, сообщения от ядра, syslog или различных приложений. Все эти сообщения хранятся в централизованном месторасположении – файле журнала.
Параметры Journald хранятся в файле конфигурации по умолчанию /etc/systemd/journald.conf. Он генерируется при компиляции и содержит опции, значение которых можно изменять в соответствии с требованиями системы.
Фильтрация записей журнала по времени#
Для использования времени в формате UTC укажите опцию –-utc:
journalctl --utc
Чтобы просмотреть все записи, начиная с конкретных даты и времени, например, 8:15 утра 15 февраля 2019, выполните команду:
journalctl --since "2019-02-15 08:15:00"
Аналогичным образом укажите начальную дату today (сегодня) или yesterday (вчера):
journalctl --since today
journalctl --since yesterday
Просмотр последних записей журнала#
Для просмотра последних записей журнала (по умолчанию 10) используйте опцию –n:
journalctl –n
После нее укажите необходимое количество записей:
journalctl -n 20
Просмотр записей журнала по загрузкам#
Список загрузок относительно текущей, их идентификаторы, а также временные метки первого и последнего сообщений, соответствующих загрузке, можно получить при помощи опции —list-boots.
journalctl --list-boots
Чтобы просмотреть записи журнала текущей загрузки (номер 0), воспользуйтесь опцией –b:
journalctl -b
Просмотр записей конкретного пользователя или группы#
Для просмотра записей конкретного пользователя или группы укажите идентификатор пользователя или группы:
для фильтрации записей по идентификатору пользователя
1000введите:journalctl _UID=1000для фильтрации записей по идентификатору пользователя
1000и начальной датеtoday(сегодня) введите:
journalctl _UID=1000 --since today
для фильтрации записей по идентификатору пользователя
1000, начальной датеtoday(сегодня), начиная с предыдущей загрузки, введите:
journalctl _UID=1000 -b -1 --since today
Просмотр записей, созданных файлом#
Чтобы показать все записи, созданные определенным файлом (например, исполняемым), введите после команды его имя:
journalctl /usr/bin/dbus-daemon
journalctl /usr/bin/bash
Просмотр записей в реальном времени#
Опция -f позволяет следить за журналом в процессе его написания:
journalctl -f
Удаление старых записей журнала#
Опция —disk-usage показывает общий объем дискового пространства, занимаемого активными и архивированными файлами журнала.
journalctl —disk-usage
Для удаления старых (архивированных) файлов воспользуйтесь командами ниже:
удалять файлы, пока используемое ими дисковое пространство не сократится до указанного размера:
journalctl --vacuum-size=50Mудалить все файлы, созданные раньше заданного промежутка времени:
journalctl --vacuum-time=1yearsудалять файлы, пока их количество не станет равно заданному:
journalctl --vacuum-files=4