Простой пример, как можно доставлять syslog с linux машин в elasticsearch.
Для сбора логов на целевой машине я буду использовать вектор. У меня ubuntu 22.04, установить vector можно так:
bash -c "$(curl -L https://setup.vector.dev)"
sudo apt-get install vector
Далее приведем его конфигурационный файл /etc/vector/vector.yaml к следующему виду:
sources:
syslog:
type: file
include:
- /var/log/syslog
ignore_older: 86400
sinks:
logstash:
inputs:
- syslog
type: socket
address: "<logstash_ip>:<logstash_port>"
mode: tcp
encoding:
codec: text
И запустим vector:
sudo systemctl enable vector
sudo systemctl start vector
Затем на машине с logstash создадим конфиг /etc/logstash/conf.d/syslog.conf:
input {
tcp {
port => 5044
codec => plain {
charset => "UTF-8"
}
}
}
filter {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
timezone => "UTC"
}
}
output {
elasticsearch {
hosts => ["https://<elastic_ip>:9200"]
user => "<elastic_user>"
password => "<elastic_password>"
index => "syslog-%{+YYYY.MM.dd}"
ssl => true
ssl_certificate_verification => false
}
}Перезапускаем logstash:
sudo systemctl restart logstash
Уже после этого мы должны увидеть новый индекс в кибане, далее нужно создать data view и можно просматривать документы.
#elk