Введение
Vector by Datadog — это высокопроизводительный сквозной (агент и агрегатор) observability-пайплайн, который позволяет собирать, преобразовывать и маршрутизировать все ваши логи и метрики. К тому же у него открытый исходный код. Vector и сам может служить агрегатором логов, но нередко эффективнее использовать Vector.dev в связке со специализированным хранилищем данных, например Manticore.
Посмотрим, как они работают вместе. Для этого разберём индексацию dpkg.log — стандартного лога пакетного менеджера Debian (того же, что и в статье об интеграции с Logstash/Filebeat
). Сам лог устроен просто:
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 dpkg_log 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 — высокопроизводительным сквозным observability-пайплайном. Связка Vector.dev и Manticore не только упрощает работу с логами, но и расширяет возможности за счёт преобразований и маршрутизации. Какой бы простой или сложной ни была структура ваших логов, эта интеграция — надёжное решение: с ней собирать, преобразовывать и хранить данные становится проще и эффективнее.

