Здравствуйте. Недавно начал работать с ELK и возник вопрос по настройке grok.
Есть много устройств Control4, на каждом стоит кастомный линукс и расшарена папка /var/log. Задача: забирать и анализировать логи в ELK. ELK поднял на Win Serv 2019 filebeat там же. Filebeat'ом отправляю логи пока с 2х устройств (ниже filebeat.yml
):
filebeat.inputs:
- type: log
enabled: true
paths:
- \\10.223.0.9\log\**\*.log
- \\10.223.0.15\log\**\*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["10.221.12.157:5044"]
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
logging.level: debug
logging.selectors: ["*"]
Logstash настроен так logstash.conf
:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601} %{ISO8601_TIMEZONE} %{HOSTNAME} %{NAGIOSTIME} %{LOGLEVEL:log-level}?%{GREEDYDATA:message}" }
}
}
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+yyyy.ww}"
document_type => "%{[@metadata][type]}"
}
stdout {
codec => rubydebug
}
}
Вопрос следующий:
В https://grokdebug.herokuapp.com/ создал выражение для строки
2020-10-11 19:40:08.221 +0300 ea5-master-000FFF1BFD4D [3721] ERROR: handleConnect(): Error connecting [10.223.0.53:5117]: Connection refused
%{TIMESTAMP_ISO8601} %{ISO8601_TIMEZONE} %{HOSTNAME} %{NAGIOSTIME} %{LOGLEVEL:log-level}?%{GREEDYDATA:message}
Результат:
{
"TIMESTAMP_ISO8601": [
[
"2020-10-11 19:40:08.221"
]
],
"YEAR": [
[
"2020"
]
],
"MONTHNUM": [
[
"10"
]
],
"MONTHDAY": [
[
"11"
]
],
"HOUR": [
[
"19",
null,
"03"
]
],
"MINUTE": [
[
"40",
null,
"00"
]
],
"SECOND": [
[
"08.221"
]
],
"ISO8601_TIMEZONE": [
[
null,
"+0300"
]
],
"HOSTNAME": [
[
"ea5-master-000FFF1BFD4D"
]
],
"NAGIOSTIME": [
[
"[3721]"
]
],
"nagios_epoch": [
[
"3721"
]
],
"BASE10NUM": [
[
"3721"
]
],
"log": [
[
"ERROR"
]
],
"message": [
[
": handleConnect(): Error connecting [10.223.0.53:5117]: Connection refused"
]
]
}
Вроде всё ок. Отдаёт hostname "ea5-master-000FFF1BFD4D" (название устройства), уровень логирования и само сообщение. В Kibana сделал Refresh index, но вместо ожидаемого выводится информация о системе, где развёрнут ELK:
@timestamp
Oct 11, 2020 @ 19:40:08.595
@version
1
_id
2TmIGHUBhnLYxS-RpHjs
_index
filebeat-2020.41
_score
-
_type
_doc
agent.ephemeral_id
3a1a548f-9407-4c39-a64e-1b46c2ef70be
agent.hostname
RST-SRV-ELK
agent.id
04c5b675-0955-43ab-9428-60dec8935bc4
agent.name
RST-SRV-ELK
agent.type
filebeat
agent.version
7.9.2
ecs.version
1.5.0
host.architecture
x86_64
host.hostname
RST-SRV-ELK
host.id
039d8820-2365-476f-beeb-4fd9d68d9586
host.ip
10.221.12.157
host.mac
00:50:56:bc:64:2a
host.name
RST-SRV-ELK
host.os.build
17763.1397
host.os.family
windows
host.os.kernel
10.0.17763.1397 (WinBuild.160101.0800)
host.os.name
Windows Server 2019 Standard
host.os.platform
windows
host.os.version
10.0
input.type
log
log.file.path
\\10.223.0.9\log\debug\director.log
log.offset
826,985
message
2020-10-11 19:40:08.221 +0300 ea5-master-000FFF1BFD4D [3721] ERROR: handleConnect(): Error connecting [10.223.0.53:5117]: Connection refused
tags
beats_input_codec_plain_applied
Прошу помочь правильно оформить grok фильтр.