Поиск по сайту:

Как установить Elasticsearch, Logstash и Kibana (стек ELK) на CentOS 7


Введение

В этом руководстве мы рассмотрим установку стека Elasticsearch ELK на CentOS 7, то есть Elasticsearch 2.2.x, Logstash 2.2.x и Kibana 4.4.x. Мы также покажем вам, как настроить его для сбора и визуализации системных журналов ваших систем в централизованном месте с помощью Filebeat 1.1.x. Logstash — это инструмент с открытым исходным кодом для сбора, анализа и хранения журналов для будущего использования. Kibana — это веб-интерфейс, который можно использовать для поиска и просмотра журналов, проиндексированных Logstash. Оба этих инструмента основаны на Elasticsearch, который используется для хранения журналов.

Централизованное ведение журналов может быть очень полезным при попытке выявить проблемы с вашими серверами или приложениями, поскольку оно позволяет выполнять поиск по всем вашим журналам в одном месте. Это также полезно, поскольку позволяет выявлять проблемы, охватывающие несколько серверов, путем сопоставления их журналов за определенный период времени.

Можно использовать Logstash для сбора журналов всех типов, но мы ограничим объем этого руководства сбором системных журналов.

Наша цель

Цель руководства — настроить Logstash для сбора системных журналов с нескольких серверов и настроить Kibana для визуализации собранных журналов.

Наша установка стека ELK состоит из четырех основных компонентов:

  • Logstash: серверный компонент Logstash, обрабатывающий входящие журналы.
  • Elasticsearch: сохраняет все журналы.
  • Kibana: веб-интерфейс для поиска и визуализации журналов, которые будут передаваться через Nginx.
  • Filebeat: установленный на клиентских серверах, которые будут отправлять свои журналы в Logstash, Filebeat служит агентом доставки журналов, который использует сетевой протокол lumberjack для связи с Logstash

Мы установим первые три компонента на один сервер, который мы будем называть нашим сервером ELK. Filebeat будет установлен на всех клиентских серверах, для которых мы хотим собирать журналы, которые мы вместе будем называть нашими клиентскими серверами.

Предпосылки

Для выполнения этого руководства вам потребуется root-доступ к CentOS 7 VPS. Инструкции по настройке можно найти здесь (шаги 3 и 4): Initial Server Setup with CentOS 7.

Если вы предпочитаете вместо этого использовать Ubuntu, ознакомьтесь с этим руководством: Как установить ELK на Ubuntu 14.04.

Объем ЦП, ОЗУ и хранилища, которые потребуются вашему серверу ELK, зависит от объема журналов, которые вы собираетесь собирать. В этом руководстве мы будем использовать VPS со следующими характеристиками для нашего сервера ELK:

  • ОС: CentOS 7
  • ОЗУ: 4 ГБ
  • ЦП: 2

В дополнение к вашему серверу ELK вам понадобится несколько других серверов, с которых вы будете собирать журналы.

Давайте приступим к настройке нашего сервера ELK!

Установить Java 8

Для Elasticsearch и Logstash требуется Java, поэтому мы установим ее сейчас. Мы установим последнюю версию Oracle Java 8, потому что это то, что рекомендует Elasticsearch. Однако он должен нормально работать с OpenJDK, если вы решите пойти по этому пути. Выполнение действий, описанных в этом разделе, означает, что вы принимаете двоичное лицензионное соглашение Oracle для Java SE.

Перейдите в свой домашний каталог и загрузите Oracle Java 8 (обновление 73, последнее на момент написания этой статьи) JDK RPM с помощью следующих команд:

  1. cd ~
  2. wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

Затем установите RPM с помощью этой команды yum (если вы загрузили другую версию, подставьте здесь имя файла):

  1. sudo yum -y localinstall jdk-8u73-linux-x64.rpm

Теперь Java должна быть установлена в /usr/java/jdk1.8.0_73/jre/bin/java и связана с /usr/bin/java.

Вы можете удалить файл архива, который вы скачали ранее:

  1. rm ~/jdk-8u*-linux-x64.rpm

Теперь, когда Java 8 установлена, давайте установим ElasticSearch.

Установить эластичный поиск

Elasticsearch можно установить с помощью менеджера пакетов, добавив репозиторий пакетов Elastic.

Выполните следующую команду, чтобы импортировать общедоступный GPG-ключ Elasticsearch в rpm:

  1. sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Создайте новый файл репозитория yum для Elasticsearch. Обратите внимание, что это одна команда:

  1. echo '[elasticsearch-2.x]
  2. name=Elasticsearch repository for 2.x packages
  3. baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
  4. gpgcheck=1
  5. gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  6. enabled=1
  7. ' | sudo tee /etc/yum.repos.d/elasticsearch.repo

Установите Elasticsearch с помощью этой команды:

  1. sudo yum -y install elasticsearch

Теперь Elasticsearch установлен. Отредактируем конфигурацию:

  1. sudo vi /etc/elasticsearch/elasticsearch.yml

Вы захотите ограничить внешний доступ к вашему экземпляру Elasticsearch (порт 9200), чтобы посторонние не могли прочитать ваши данные или отключить ваш кластер Elasticsearch через HTTP API. Найдите строку, указывающую network.host, раскомментируйте ее и замените ее значение на \localhost, чтобы она выглядела так:

network.host: localhost

Сохраните и закройте elasticsearch.yml.

Теперь запустите Elasticsearch:

  1. sudo systemctl start elasticsearch

Затем выполните следующую команду для автоматического запуска Elasticsearch при загрузке:

  1. sudo systemctl enable elasticsearch

Теперь, когда Elasticsearch запущен, давайте установим Kibana.

Установить Кибану

Пакет Kibana использует тот же ключ GPG, что и Elasticsearch, и мы уже установили этот открытый ключ.

Создайте и отредактируйте новый файл репозитория yum для Kibana:

  1. sudo vi /etc/yum.repos.d/kibana.repo

Добавьте следующую конфигурацию репозитория:

  1. [kibana-4.4]
  2. name=Kibana repository for 4.4.x packages
  3. baseurl=http://packages.elastic.co/kibana/4.4/centos
  4. gpgcheck=1
  5. gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  6. enabled=1

Сохранить и выйти.

Установите Kibana с помощью этой команды:

  1. sudo yum -y install kibana

Откройте файл конфигурации Kibana для редактирования:

  1. sudo vi /opt/kibana/config/kibana.yml

В файле конфигурации Kibana найдите строку, указывающую server.host, и замените IP-адрес (по умолчанию \0.0.0.0) на \localhost:

server.host: "localhost"

Сохранить и выйти. Этот параметр делает Kibana доступной только для локального хоста. Это нормально, потому что мы установим обратный прокси-сервер Nginx на том же сервере, чтобы разрешить внешний доступ.

Теперь запустите службу Kibana и включите ее:

  1. sudo systemctl start kibana
  2. sudo chkconfig kibana on

Прежде чем мы сможем использовать веб-интерфейс Kibana, мы должны настроить обратный прокси-сервер. Давайте сделаем это сейчас, с Nginx.

Установите Nginx

Поскольку мы настроили Kibana для прослушивания localhost, мы должны настроить обратный прокси-сервер, чтобы разрешить внешний доступ к нему. Для этой цели мы будем использовать Nginx.

Примечание. Если у вас уже есть экземпляр Nginx, который вы хотите использовать, не стесняйтесь использовать его. Просто не забудьте настроить Kibana так, чтобы он был доступен для вашего сервера Nginx (возможно, вы захотите изменить значение host в /opt/kibana/config/kibana.yml, на частный IP-адрес вашего сервера Kibana). Также рекомендуется включить SSL/TLS.

Добавьте репозиторий EPEL в yum:

  1. sudo yum -y install epel-release

Теперь используйте yum для установки Nginx и httpd-tools:

  1. sudo yum -y install nginx httpd-tools

Используйте htpasswd для создания пользователя-администратора с именем \kibanaadmin (вы должны использовать другое имя), который может получить доступ к веб-интерфейсу Kibana:

  1. sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

Введите пароль в командной строке. Запомните этот логин, так как он понадобится вам для доступа к веб-интерфейсу Kibana.

Теперь откройте файл конфигурации Nginx в вашем любимом редакторе. Мы будем использовать vi:

  1. sudo vi /etc/nginx/nginx.conf

Найдите блок сервера по умолчанию (начинается с server{), последний блок конфигурации в файле, и удалите его. Когда вы закончите, последние две строки в файле должны выглядеть так:

    include /etc/nginx/conf.d/*.conf;
}

Сохранить и выйти.

Теперь мы создадим блок сервера Nginx в новом файле:

  1. sudo vi /etc/nginx/conf.d/kibana.conf

Вставьте следующий блок кода в файл. Обязательно обновите server_name, чтобы он соответствовал имени вашего сервера:

  1. server {
  2. listen 80;
  3. server_name example.com;
  4. auth_basic "Restricted Access";
  5. auth_basic_user_file /etc/nginx/htpasswd.users;
  6. location / {
  7. proxy_pass http://localhost:5601;
  8. proxy_http_version 1.1;
  9. proxy_set_header Upgrade $http_upgrade;
  10. proxy_set_header Connection 'upgrade';
  11. proxy_set_header Host $host;
  12. proxy_cache_bypass $http_upgrade;
  13. }
  14. }

Сохранить и выйти. Это настраивает Nginx для направления HTTP-трафика вашего сервера в приложение Kibana, которое прослушивает localhost:5601. Кроме того, Nginx будет использовать файл htpasswd.users, который мы создали ранее, и потребует базовой аутентификации.

Теперь запустите и включите Nginx, чтобы наши изменения вступили в силу:

  1. sudo systemctl start nginx
  2. sudo systemctl enable nginx

Примечание. В этом руководстве предполагается, что SELinux отключен. Если это не так, вам может потребоваться выполнить следующую команду для правильной работы Kibana: sudo setsebool -P httpd_can_network_connect 1

Теперь Kibana доступна через ваше полное доменное имя или общедоступный IP-адрес вашего сервера ELK, например http://elk_server_public_ip/. Если вы зайдете туда в веб-браузере, после ввода учетных данных \kibanaadmin вы должны увидеть страницу приветствия Kibana, которая попросит вас настроить шаблон индекса. Вернемся к этому позже, после того, как мы установим все остальные компоненты. .

Установить Логсташ

Пакет Logstash использует тот же ключ GPG, что и Elasticsearch, и мы уже установили этот открытый ключ, поэтому давайте создадим и отредактируем новый файл репозитория Yum для Logstash:

  1. sudo vi /etc/yum.repos.d/logstash.repo

Добавьте следующую конфигурацию репозитория:

  1. [logstash-2.2]
  2. name=logstash repository for 2.2 packages
  3. baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
  4. gpgcheck=1
  5. gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
  6. enabled=1

Сохранить и выйти.

Установите Logstash с помощью этой команды:

  1. sudo yum -y install logstash

Logstash установлен, но еще не настроен.

Создание SSL-сертификатов

Поскольку мы собираемся использовать Filebeat для отправки журналов с наших клиентских серверов на наш сервер ELK, нам необходимо создать сертификат SSL и пару ключей. Сертификат используется Filebeat для проверки подлинности сервера ELK. Создайте каталоги, в которых будут храниться сертификат и закрытый ключ, с помощью следующих команд:

Теперь у вас есть два варианта создания SSL-сертификатов. Если у вас есть настройка DNS, которая позволит вашим клиентским серверам разрешать IP-адрес сервера ELK, используйте вариант 2. В противном случае вариант 1 позволит вам использовать IP-адреса.

Вариант 1: IP-адрес

Если у вас нет настройки DNS, которая позволила бы вашим серверам, с которых вы будете собирать журналы, разрешать IP-адрес вашего сервера ELK, вам придется добавить частный IP-адрес вашего сервера ELK в subjectAltName. (SAN) сертификата SSL, который мы собираемся сгенерировать. Для этого откройте файл конфигурации OpenSSL:

  1. sudo vi /etc/pki/tls/openssl.cnf

Найдите в файле раздел [ v3_ca ] и добавьте под ним эту строку (подставив частный IP-адрес ELK-сервера):

  1. subjectAltName = IP: ELK_server_private_ip

Сохранить и выйти.

Теперь создайте сертификат SSL и закрытый ключ в соответствующих местах (/etc/pki/tls/) с помощью следующих команд:

  1. cd /etc/pki/tls
  2. sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Файл logstash-forwarder.crt будет скопирован на все серверы, которые будут отправлять журналы в Logstash, но мы сделаем это чуть позже. Давайте завершим нашу настройку Logstash. Если вы выбрали этот вариант, пропустите вариант 2 и перейдите к настройке Logstash.

Вариант 2: полное доменное имя (DNS)

Если у вас есть настройка DNS с вашей частной сетью, вы должны создать запись A, содержащую частный IP-адрес сервера ELK — это доменное имя будет использоваться в следующей команде для создания SSL-сертификата. В качестве альтернативы вы можете использовать запись, указывающую на общедоступный IP-адрес сервера. Просто убедитесь, что ваши серверы (те, с которых вы будете собирать журналы) смогут преобразовать доменное имя в ваш сервер ELK.

Теперь сгенерируйте сертификат SSL и закрытый ключ в соответствующих местах (/etc/pki/tls/…) с помощью следующей команды (замените на полное доменное имя сервера ELK):

  1. cd /etc/pki/tls
  2. sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Файл logstash-forwarder.crt будет скопирован на все серверы, которые будут отправлять журналы в Logstash, но мы сделаем это чуть позже. Давайте завершим нашу настройку Logstash.

Настроить Логсташ

Файлы конфигурации Logstash имеют формат JSON и находятся в /etc/logstash/conf.d. Конфигурация состоит из трех разделов: входы, фильтры и выходы.

Давайте создадим файл конфигурации с именем 02-beats-input.conf и настроим наш ввод \filebeat:

  1. sudo vi /etc/logstash/conf.d/02-beats-input.conf

Вставьте следующую входную конфигурацию:

  1. input {
  2. beats {
  3. port => 5044
  4. ssl => true
  5. ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
  6. ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  7. }
  8. }

Сохранить и выйти. Это указывает на ввод beats, который будет прослушивать порт tcp 5044 и будет использовать SSL-сертификат и закрытый ключ, которые мы создали ранее.

Теперь давайте создадим файл конфигурации с именем 10-syslog-filter.conf, куда мы добавим фильтр для сообщений системного журнала:

  1. sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

Вставьте следующую конфигурацию фильтра системного журнала:

  1. filter {
  2. if [type] == "syslog" {
  3. grok {
  4. match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
  5. add_field => [ "received_at", "%{@timestamp}" ]
  6. add_field => [ "received_from", "%{host}" ]
  7. }
  8. syslog_pri { }
  9. date {
  10. match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
  11. }
  12. }
  13. }

Сохранить и выйти. Этот фильтр ищет журналы, которые помечены как «системный журнал» (Filebeat), и попытается использовать grok для анализа входящих журналов системного журнала, чтобы сделать их структурированными и доступными для запросов.

Наконец, мы создадим файл конфигурации с именем 30-elasticsearch-output.conf:

  1. sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Вставьте следующую конфигурацию вывода:

  1. output {
  2. elasticsearch {
  3. hosts => ["localhost:9200"]
  4. sniffing => true
  5. manage_template => false
  6. index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  7. document_type => "%{[@metadata][type]}"
  8. }
  9. }

Сохранить и выйти. Этот вывод в основном настраивает Logstash для хранения данных битов в Elasticsearch, который работает по адресу localhost:9200, в индексе, названном в честь используемого бита (в нашем случае — filebeat).

Если вы хотите добавить фильтры для других приложений, использующих ввод Filebeat, обязательно назовите файлы так, чтобы они сортировались между входной и выходной конфигурацией (т. е. между 02- и 30-).

Проверьте свою конфигурацию Logstash с помощью этой команды:

  1. sudo service logstash configtest

Он должен отображать Configuration OK, если нет синтаксических ошибок. В противном случае попробуйте прочитать вывод об ошибке, чтобы узнать, что не так с вашей конфигурацией Logstash.

Перезапустите и включите Logstash, чтобы наши изменения конфигурации вступили в силу:

  1. sudo systemctl restart logstash
  2. sudo chkconfig logstash on

Далее мы загрузим образцы информационных панелей Kibana.

Загрузить информационные панели Kibana

Elastic предоставляет несколько примеров информационных панелей Kibana и шаблонов индексов Beats, которые помогут вам начать работу с Kibana. Хотя мы не будем использовать информационные панели в этом руководстве, мы все равно загрузим их, чтобы мы могли использовать шаблон индекса Filebeat, который он включает.

Сначала загрузите архив примеров панелей мониторинга в свой домашний каталог:

  1. cd ~
  2. curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

Установите пакет unzip с помощью этой команды:

  1. sudo yum -y install unzip

Далее извлеките содержимое архива:

  1. unzip beats-dashboards-*.zip

И загрузите образцы информационных панелей, визуализаций и шаблонов индексов Beats в Elasticsearch с помощью следующих команд:

  1. cd beats-dashboards-*
  2. ./load.sh

Это шаблоны индексов, которые мы только что загрузили:

  • [packetbeat-]ГГГГ.ММ.ДД
  • [topbeat-]ГГГГ.ММ.ДД
  • [filebeat-]ГГГГ.ММ.ДД
  • [winlogbeat-]ГГГГ.ММ.ДД

Когда мы начнем использовать Kibana, мы выберем шаблон индекса Filebeat по умолчанию.

Загрузить шаблон индекса Filebeat в Elasticsearch

Поскольку мы планируем использовать Filebeat для отправки журналов в Elasticsearch, нам следует загрузить шаблон индекса Filebeat. Шаблон индекса настроит Elasticsearch для интеллектуального анализа входящих полей Filebeat.

Сначала загрузите шаблон индекса Filebeat в свой домашний каталог:

  1. cd ~
  2. curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

Затем загрузите шаблон с помощью этой команды:

  1. curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

Если шаблон загрузился правильно, вы должны увидеть следующее сообщение:

Output:
{ "acknowledged" : true }

Теперь, когда наш сервер ELK готов принимать данные Filebeat, давайте перейдем к настройке Filebeat на каждом клиентском сервере.

Настройка Filebeat (добавление клиентских серверов)

Выполните эти шаги для каждого сервера CentOS или RHEL 7, с которого вы хотите отправлять журналы на свой сервер ELK. Инструкции по установке Filebeat в дистрибутивах Linux на основе Debian (например, Ubuntu, Debian и т. д.) см. в разделе «Настройка Filebeat (добавление клиентских серверов)» варианта Ubuntu этого руководства.

Копировать SSL-сертификат

На своем сервере ELK скопируйте SSL-сертификат, созданный в предварительном руководстве, на свой клиентский сервер (замените адрес клиентского сервера и свой собственный логин):

  1. scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

После предоставления учетных данных для входа убедитесь, что копия сертификата прошла успешно. Это необходимо для связи между клиентскими серверами и сервером ELK.

Теперь на клиентском сервере скопируйте SSL-сертификат сервера ELK в соответствующее место (/etc/pki/tls/certs):

  1. sudo mkdir -p /etc/pki/tls/certs
  2. sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Теперь установим пакет Topbeat.

Установить пакет Filebeat

На клиентском сервере создайте и выполните следующую команду, чтобы импортировать общедоступный ключ GPG Elasticsearch в rpm:

  1. sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Создайте и отредактируйте новый файл репозитория yum для Filebeat:

  1. sudo vi /etc/yum.repos.d/elastic-beats.repo

Добавьте следующую конфигурацию репозитория:

  1. [beats]
  2. name=Elastic Beats Repository
  3. baseurl=https://packages.elastic.co/beats/yum/el/$basearch
  4. enabled=1
  5. gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
  6. gpgcheck=1

Сохранить и выйти.

Установите Filebeat с помощью этой команды:

  1. sudo yum -y install filebeat

Filebeat установлен, но еще не настроен.

Настроить Filebeat

Теперь мы настроим Filebeat для подключения к Logstash на нашем сервере ELK. Этот раздел поможет вам изменить пример файла конфигурации, который поставляется вместе с Filebeat. Когда вы выполните шаги, у вас должен быть файл, который выглядит примерно так.

На клиентском сервере создайте и отредактируйте файл конфигурации Filebeat:

  1. sudo vi /etc/filebeat/filebeat.yml

Примечание. Файл конфигурации Filebeat имеет формат YAML, а это означает, что отступы очень важны! Обязательно используйте то же количество пробелов, которое указано в этих инструкциях.

В верхней части файла вы увидите раздел prospectors, в котором вы можете определить старателей, которые указывают, какие файлы журналов должны быть отправлены и как с ними следует обращаться. Каждый старатель обозначается символом -.

Мы изменим существующий поисковик для отправки журналов secure и messages в Logstash. В разделе paths закомментируйте файл -/var/log/*.log. Это предотвратит отправку Filebeat каждого .log в этом каталоге в Logstash. Затем добавьте новые записи для syslog и auth.log. Когда вы закончите, это должно выглядеть примерно так:

...
      paths:
        - /var/log/secure
        - /var/log/messages
#        - /var/log/*.log
...

Затем найдите строку, в которой указан document_type:, раскомментируйте ее и измените ее значение на \syslog. После модификации это должно выглядеть так:

...
      document_type: syslog
...

Это указывает, что журналы в этом старателе относятся к типу syslog (это тип, который ищет наш фильтр Logstash).

Если вы хотите отправить другие файлы на свой сервер ELK или внести какие-либо изменения в то, как Filebeat обрабатывает ваши журналы, не стесняйтесь изменять или добавлять записи старателей.

Затем в разделе output найдите строку с текстом elasticsearch:, которая указывает на раздел вывода Elasticsearch (который мы не собираемся использовать). Удалите или закомментируйте весь раздел вывода Elasticsearch (до строки с текстом logstash:).

Найдите закомментированный раздел вывода Logstash, обозначенный строкой #logstash:, и раскомментируйте его, удалив предыдущий #. В этом разделе раскомментируйте строку hosts: [localhost:5044]. Измените localhost на частный IP-адрес (или имя хоста, если вы выбрали этот вариант) вашего сервера ELK:

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]

Это настраивает Filebeat для подключения к Logstash на вашем сервере ELK через порт 5044 (порт, для которого мы указали входные данные ранее).

Непосредственно под записью hosts и с тем же отступом добавьте следующую строку:

    bulk_max_size: 1024

Затем найдите раздел tls и раскомментируйте его. Затем раскомментируйте строку, указывающую certificate_authorities, и измените ее значение на [/etc/pki/tls/certs/logstash-forwarder.crt]. Это должно выглядеть примерно так:

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

Это настраивает Filebeat на использование SSL-сертификата, который мы создали на сервере ELK.

Сохранить и выйти.

Теперь запустите и включите Filebeat, чтобы применить наши изменения:

  1. sudo systemctl start filebeat
  2. sudo systemctl enable filebeat

Опять же, если вы не уверены, что ваша конфигурация Filebeat верна, сравните ее с этой конфигурацией Filebeat.

Теперь Filebeat отправляет сообщения вашего системного журнала и файлы secure на ваш сервер ELK! Повторите этот раздел для всех остальных серверов, для которых вы хотите собирать журналы.

Тестовая установка Filebeat

Если ваш стек ELK настроен правильно, Filebeat (на вашем клиентском сервере) должен отправлять ваши журналы в Logstash на вашем сервере ELK. Logstash должен загружать данные Filebeat в Elasticsearch в виде индекса с отметкой даты filebeat-ГГГГ.ММ.ДД.

На вашем сервере ELK убедитесь, что Elasticsearch действительно получает данные, запросив индекс Filebeat с помощью этой команды:

  1. curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Вы должны увидеть кучу вывода, который выглядит следующим образом:

Sample Output:
... { "_index" : "filebeat-2016.01.29", "_type" : "log", "_id" : "AVKO98yuaHvsHQLa53HE", "_score" : 1.0, "_source":{"message":"Feb 3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"} } ...

Если ваши выходные данные показывают 0 совпадений, Elasticsearch не загружает никакие журналы в индексе, который вы искали, и вам следует проверить свои настройки на наличие ошибок. Если вы получили ожидаемый результат, перейдите к следующему шагу.

Подключиться к Кибане

Когда вы закончите настройку Filebeat на всех серверах, для которых вы хотите собирать журналы, давайте посмотрим на Kibana, веб-интерфейс, который мы установили ранее.

В веб-браузере перейдите к полному доменному имени или общедоступному IP-адресу вашего сервера ELK. После ввода учетных данных \kibanaadmin вы должны увидеть страницу, предлагающую настроить шаблон индекса по умолчанию:

Идите вперед и выберите [filebeat]-ГГГ.ММ.ДД в меню «Шаблоны индексов» (слева), затем нажмите кнопку «Звезда» (Установить как индекс по умолчанию), чтобы установить индекс Filebeat по умолчанию.

Теперь нажмите ссылку Discover на верхней панели навигации. По умолчанию отображаются все данные журнала за последние 15 минут. Вы должны увидеть гистограмму с событиями журнала и сообщениями журнала ниже:

Прямо сейчас там будет немного, потому что вы только собираете системные журналы со своих клиентских серверов. Здесь вы можете искать и просматривать свои журналы. Вы также можете настроить панель инструментов.

Попробуйте следующее:

  • Выполните поиск по слову \root, чтобы узнать, не пытается ли кто-нибудь войти на ваши серверы с правами root
  • Поиск определенного имени хоста (ищите host: hostname)
  • Измените временной интервал, выбрав область на гистограмме или в меню выше.
  • Нажимайте на сообщения под гистограммой, чтобы увидеть, как данные фильтруются.

В Kibana есть много других функций, таких как построение графиков и фильтрация, так что не стесняйтесь ковыряться!

Заключение

Теперь, когда ваши системные журналы централизованы с помощью Elasticsearch и Logstash, и вы можете визуализировать их с помощью Kibana, вы должны начать с централизации всех ваших важных журналов. Помните, что вы можете отправлять практически любой тип журнала или индексированных данных в Logstash, но данные становятся еще более полезными, если они анализируются и структурируются с помощью grok.

Чтобы улучшить свой новый стек ELK, вам следует заняться сбором и фильтрацией других журналов с помощью Logstash, а также собрать системные метрики с помощью Topbeat со стеком ELK. Все эти темы рассматриваются в других учебниках этой серии.

Удачи!