Kibana @timestamp mapping & filter
Я использую следующую систему / пакет:
$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
$ rpm -q filebeat
filebeat-1.3.0-1.x86_64
$
с /etc/filebeat/filebeat.yml
:
$ cat /etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
- /var/log/*.log
input_type: log
registry_file: /var/lib/filebeat/registry
output:
elasticsearch:
hosts: ["localhost:9200"]
shipper:
logging:
to_syslog: true
files:
$
"message": "8 сентября 10:20:01 X CROND[11586]: (root) CMD (/usr/lib64/sa/sa1 1 1)",
- Как я могу использовать
timestamp
из сообщения как@timestamp
в кибане? - Как я могу разделить остальную часть сообщения (демон и т. Д.) На отдельные поля?
1 ответ
message
поле - это текст, а не то, что Кибана знает, как использовать в качестве метки времени. Вам нужно добавить дополнительный анализ, чтобы преобразовать метку времени из вашего файла журнала в date
тип данных. Вы можете узнать больше о типах данных Elasticsearch, прочитав соответствующую документацию.
Вы настроили Filebeat для вывода непосредственно в Elasticsearch. Чтобы проанализировать метку времени (и, возможно, другие поля) из вашего файла журнала, вам необходимо настроить Filebeat для вывода в Logstash. Затем Logstash можно использовать для изменения данных журнала, анализа временной метки, а также для сопоставления с другим шаблоном.
Сказав все это, похоже, что вы можете использовать Filebeat для чтения файла системного журнала. Это нормально, но Logstash также может напрямую получать данные системного журнала, что может упростить вашу общую настройку.
Случай 1. Если у вас есть отметка времени в сообщении как @timestamp, измените ее на корневой уровень, изменив json.keys_under_root: true, затем измените "json.overwrite_keys: true
Случай 2. Добавьте @timestamp в свое приложение, например, если в вашем журнале есть данные как {"@timestamp":"2017-01-18T11:41:28.753Z","message":"Some log"}
Затем измените "json.overwrite_keys: false" на true в filebeat.yml, и теперь @timestamp совпадает