Введение
Vector by Datadog — это высокопроизводительный сквозной (агент и агрегатор) конвейер данных наблюдаемости, позволяющий собирать, преобразовывать и направлять все ваши журналы и метрики. Кроме того, он является открытым исходным кодом. Хотя он может выступать в роли агрегатора, часто более эффективно использовать Vector.dev совместно со специализированным хранилищем данных, таким как Manticore.
Посмотрим, как они могут работать вместе. Для этого мы используем пример индексации dpkg.log, стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже:
2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1
2023-05-31 10:42:55 trigproc libc-bin:amd64 2.31-0ubuntu9.9 <none>
2023-05-31 10:42:55 status half-configured libc-bin:amd64 2.31-0ubuntu9.9
2023-05-31 10:42:55 status installed libc-bin:amd64 2.31-0ubuntu9.9
2023-05-31 10:42:55 trigproc systemd:amd64 245.4-4ubuntu3.21 <none>
Конфигурация
Ниже приведён пример конфигурационного файла Vector.dev в формате toml:
[sources.test_file]
type = "file"
include = [ "/var/log/dpkg.log" ]
[transforms.modify_test_file]
type = "remap"
inputs = [ "test_file" ]
source = """
.vec_timestamp = del(.timestamp)"""
[sinks.manticore]
type = "elasticsearch"
inputs = [ "modify_test_file" ]
endpoints = ["http://127.0.0.1:9308"]
bulk.index = "dpkg_log"
Обратите внимание, что в этом примере мы предполагаем, что Manticore использует свой стандартный HTTP‑порт 9308. Если вы используете пользовательский HTTP‑порт, вам следует соответствующим образом изменить конфигурацию Vector.dev. Также обратите внимание, что мы добавили раздел transforms в конфигурацию, чтобы переименовать поле timestamp, так как оно является зарезервированным словом в Manticore.
Результаты
Теперь просто запустите Vector.dev с указанной выше конфигурацией, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы.
Ниже представлена получившаяся схема созданной таблицы и пример вставленного документа:
mysql> DESCRIBE dpkg_log;
+-----------------+---------+--------------------+
| Field | Type | Properties |
+-----------------+---------+--------------------+
| id | bigint | |
| file | text | indexed stored |
| host | text | indexed stored |
| message | text | indexed stored |
| source_type | text | indexed stored |
| vec_timestamp | text | indexed stored |
+-----------------+---------+--------------------+
mysql> SELECT * FROM testlog_3 LIMIT 3\G
*************************** 1. row ***************************
id: 7856533729353672195
file: /var/log/dpkg.log
host: logstash-787f68f6f-nhdd2
message: 2023-06-05 14:03:04 startup archives install
source_type: file
vec_timestamp: 2023-08-04T15:32:50.203091741Z
*************************** 2. row ***************************
id: 7856533729353672196
file: /var/log/dpkg.log
host: logstash-787f68f6f-nhdd2
message: 2023-06-05 14:03:04 install base-passwd:amd64 <none> 3.5.47
source_type: file
vec_timestamp: 2023-08-04T15:32:50.203808861Z
*************************** 3. row ***************************
id: 7856533729353672197
file: /var/log/dpkg.log
host: logstash-787f68f6f-nhdd2
message: 2023-06-05 14:03:04 status half-installed base-passwd:amd64 3.5.47
source_type: file
vec_timestamp: 2023-08-04T15:32:50.203814031Z
Заключение
Таким образом, благодаря интеграции, описанной в этом руководстве, вы теперь можете легко и эффективно индексировать свои журналы, используя Manticore в сочетании с Vector от Datadog — высокопроизводительным сквозным конвейером данных наблюдаемости. Это взаимодействие между Vector.dev и Manticore не только предоставляет упрощённый подход к управлению журналами, но и расширяет возможности за счёт поддержки преобразований и маршрутизации. Независимо от того, работаете ли вы с простыми или сложными структурами журналов, данная интеграция предлагает надёжное решение, делая процесс сбора, преобразования и хранения данных более доступным и эффективным.
