Имеется установленная система ELK– CentOS: установка Elasticsearch + Logstash + Kibana (ELK).
Там был настроен только один, локальный, лог.
Требуется добавить лог с удалённого сервера.
Действия, описанные ниже, требуется повторить для каждого хоста.
Создаём новые сертификат, который будет использоваться для шифрования данных между удалённым сервером с Logstash Forwarder – и центральным сервером с ELK:
# openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt Generating a 2048 bit RSA private key ...........................................................................................+++ ..+++ writing new private key to '/etc/pki/tls/private/logstash-forwarder.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:UA State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:ec2-54-***-***-47.compute-1.amazonaws.com Email Address []:[email protected]
Копируем файл публичного ключа с сервера Logstash – на удалённый сервер:
$ scp /etc/pki/tls/certs/logstash-forwarder.crt ec2-user@hostname:/home/ec2-user/
На клиенте копируем его в подходящее место:
# mv /home/ec2-user/etc/pki/tls/certs/logstash-forwarder.crt /etc/pki/tls/certs/
Содержание
Настройка Logstash сервера
Для работы с удалёнными хостами – Logstash использует протокол lumberjack
.
Настраиваем подключение на сервере.
Создаём файл, например – /etc/logstash/conf.d/dev.domain.com.conf
с таким содержимым:
input { lumberjack { port => 5000 type => "dev-mail" add_field => { "server" => "DEV" } ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } } filter { if [type] == "dev-mail" { grok { match => [ "message", "%{HOSTNAME}" ] } } } output { elasticsearch { host => localhost } }
Проверяем:
# /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/dev.domain.com.conf Configuration OK
Перезапускаем:
# service logstash restart Killing logstash (pid 10945) with SIGTERM Waiting logstash (pid 10945) to die... Waiting logstash (pid 10945) to die... logstash stopped. logstash started.
Проверяем порт:
# netstat -anp | grep 5000 tcp 0 0 :::5000 :::* LISTEN 18894/java
Установка Logstash Forwarder
На клиенте добавляем ключ репозитория:
# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
Создаём файл репозитория /etc/yum.repos.d/logstash-forwarder.repo
:
[logstash-forwarder] name=logstash-forwarder repository baseurl=http://packages.elasticsearch.org/logstashforwarder/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
Устанавливаем сам Forwarder:
# yum install logstash-forwarder
Настройка Logstash Forwarder
На машине-клиенте редактируем файл /etc/logstash-forwarder.conf
:
{ "network": { "servers": [ "ec2-54-***-***-47.compute-1.amazonaws.com:5000" ], "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt", "timeout": 15 }, "files": [ { "paths": [ "/home/ec2-user/log" ], "fields": { "type": "dev-mail" } } ] }
Запускаем:
# service logstash-forwarder start logstash-forwarder started
Логи форвадера хранятся в каталоге /var/log/logstash-forwarder/
.
Проверяем:
# tail -f /var/log/logstash-forwarder/logstash-forwarder.err 2015/09/11 09:01:39.986421 Setting trusted CA from file: /etc/pki/tls/certs/logstash-forwarder.crt 2015/09/11 09:01:39.987224 Connecting to [54.***.***.47]:5000 (ec2-***.***-150-47.compute-1.amazonaws.com) 2015/09/11 09:01:40.109354 Connected to 54.***.***.47 2015/09/11 09:01:42.514681 Registrar: processing 1024 events 2015/09/11 09:01:45.048796 Registrar: processing 1024 events ...
Запускаем цикл с записью в файл /home/ec2-user/log
, что бы проверить, что всё работает:
$ while [ 1 > 0 ]; do echo "ok" >> /home/ec2-user/log; sleep 2; done
Проверяем лог форвардера:
... 2015/09/11 11:18:33.313486 Registrar: processing 3 events 2015/09/11 11:18:40.809201 Registrar: processing 4 events ...
События обрабатываются, и передаются на сервер логгера.
Провеярем записи в Kibana:
В следующей части – будет описано добавление логов Tomcat с двух удалённых хостов, решение проблемы с переносом строк при отображении трассировки Java-ексепшенов и дублирования записей в Kibana.