Введение
Logstash
— это инструмент управления журналами, который собирает данные из различных источников, трансформирует их на лету и отправляет в нужное вам место назначения. Он часто используется как конвейер данных для Elasticsearch, открытого аналитического и поискового движка.
Filebeat
— это легковесный шиппер для пересылки и централизации данных журналов. После установки в качестве агента он отслеживает файлы журналов или местоположения, которые вы указываете, собирает события журналов и пересылает их для индексации, обычно в Elasticsearch или Logstash.
Теперь Manticore также поддерживает использование Logstash и Filebeat в качестве конвейеров обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как и в Elasticsearch. В настоящее время поддерживаются версии Logstash >= 7.6 и версии Filebeat >= 7.10.
Давайте рассмотрим простой пример файла конфигурации Logstash, используемого для индексации 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>
Конфигурация Logstash
Вот пример конфигурации Logstash:
input {
file {
path => ["/var/log/dpkg.log"]
start_position => "beginning"
sincedb_path => "/dev/null"
mode => "read"
exit_after_read => "true"
file_completed_action => "log"
file_completed_log_path => "/dev/null"
}
}
output {
elasticsearch {
index => " dpkg_log"
hosts => ["http://localhost:9308"]
ilm_enabled => false
manage_template => false
}
}
Обратите внимание, что, прежде чем продвигаться дальше, необходимо учесть одно важное предупреждение: Manticore не поддерживает управление шаблонами журналов и функции управления жизненным циклом индексов Elasticsearch. Поскольку эти функции включены по умолчанию в Logstash, их необходимо явно отключить в конфигурации. Кроме того, параметр hosts
в секции конфигурации output
должен соответствовать HTTP-порту, на котором слушает Manticore (по умолчанию localhost:9308
).
Результаты Logstash
После настройки конфигурации, как описано, вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и правильно проиндексированы.
Вот полученная схема созданной таблицы и пример вставленного документа:
mysql> DESCRIBE dpkg_log;
+------------------+--------+---------------------+
| Field | Type | Properties |
+------------------+--------+---------------------+
| id | bigint | |
| message | text | indexed stored |
| @version | text | indexed stored |
| @timestamp | text | indexed stored |
| path | text | indexed stored |
| host | text | indexed stored |
+------------------+--------+---------------------+
mysql> SELECT * FROM dpkg_log LIMIT 1\G
*************************** 1. row ***************************
id: 7280000849080746110
host: logstash-db848f65f-lnlf9
message: 2023-04-12 02:03:21 status unpacked libc-bin:amd64 2.31-0ubuntu9
path: /var/log/dpkg.log
@timestamp: 2023-06-16T09:23:57.405Z
@version: 1
Конфигурация Filebeat
Альтернативный способ сбора сырых данных — это использование агента Filebeat. Ниже приведена конфигурация Filebeat для работы с нашим примером журнала dpkg:
filebeat.inputs:
- type: filestream
id: example
paths:
- /var/log/dpkg.log
output.elasticsearch:
hosts: ["http://localhost:9308"]
index: "dpkg_log"
allow_older_versions: true
setup.ilm:
enabled: false
setup.template:
name: "dpkg_log"
pattern: "dpkg_log"
Конфигурация для версий Filebeat выше 8.10
Версии Filebeat выше 8.10 имеют функцию сжатия вывода, включенную по умолчанию. Поэтому в файл конфигурации необходимо добавить параметр compression_level: 0
для обеспечения совместимости с Manticore:
filebeat.inputs:
- type: filestream
id: example
paths:
- /var/log/dpkg.log
output.elasticsearch:
hosts: ["http://localhost:9308"]
index: "dpkg_log"
allow_older_versions: true
compression_level: 0
setup.ilm:
enabled: false
setup.template:
name: "dpkg_log"
pattern: "dpkg_log"
Результаты Filebeat
Как только вы запустите Filebeat с этой конфигурацией, данные журналов будут отправлены в Manticore и правильно проиндексированы. Вот полученная схема таблицы, созданной Manticore, и пример вставленного документа:
mysql> DESCRIBE dpkg_log;
+------------------+--------+--------------------+
| Field | Type | Properties |
+------------------+--------+--------------------+
| id | bigint | |
| @timestamp | text | indexed stored |
| message | text | indexed stored |
| log | json | |
| input | json | |
| ecs | json | |
| host | json | |
| agent | json | |
+------------------+--------+--------------------+
mysql> SELECT * FROM dpkg_log LIMIT 1\G
*************************** 1. row ***************************
id: 7280000849080753116
@timestamp: 2023-06-16T09:27:38.792Z
message: 2023-04-12 02:06:08 status half-installed libhogweed5:amd64 3.5.1+really3.5.1-2
input: {"type":"filestream"}
ecs: {"version":"1.6.0"}
host: {"name":"logstash-db848f65f-lnlf9"}
agent: {"ephemeral_id":"587c2ebc-e7e2-4e27-b772-19c611115996","id":"2e3d985b-3610-4b8b-aa3b-2e45804edd2c","name":"logstash-db848f65f-lnlf9","type":"filebeat","version":"7.10.0","hostname":"logstash-db848f65f-lnlf9"}
log: {"offset":80,"file":{"path":"/var/log/dpkg.log"}}
Заключение
Таким образом, вы теперь можете легко индексировать свои данные журналов, используя Manticore в сочетании с Logstash или Filebeat. Интеграция Manticore с Logstash и Filebeat открывает новые возможности для легкой индексации данных журналов.