ELK: Elasticsearch+Logstash+Kibana – добавление удалённого хоста и настройка Logstash Forwarder

Автор: | 12/09/2015
 

elk-logosИмеется установленная система 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:

kibana_4

В следующей части – будет описано добавление логов Tomcat с двух удалённых хостов, решение проблемы с переносом строк при отображении трассировки Java-ексепшенов и дублирования записей в Kibana.