Открытый поиск по логам и визуализация при помощи Elasticsearch, Fluentd и Kibana

Elasticsearch, Fluentd и Kibana (или стек EFK) позволяют собирать, индексировать, искать и визуализировать данные логов. Это отличная альтернатива программному обеспечению Splunk (сначала его можно использовать бесплатно, но по мере роста объёма данных требуется платная лицензия).

Это руководство покажет, как пользоваться этими программами.

Требования

Установка и настройка Elasticsearch

Установка Java

Для работы Elasticsearch требуется Java. Чтобы установить Java, введите:

sudo apt-get update
sudo apt-get install openjdk-7-jre-headless --yes

Убедитесь, что установка Java прошла успешно:

java -version

На экране должен появиться вывод:

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

Загрузка Elasticsearch

После этого нужно загрузить и установить deb-пакет Elasticsearch.

sudo wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.2.deb

Защита Elasticsearch

До версии 1.2 динамические скрипты были включены в Elasticsearch по умолчанию.

Поскольку далее нужно будет настроить панель управления Kibana в открытом доступе, отключите динамические скрипты, вставив следующую строку в конец файла

/etc/elasticsearch/elasticsearch.yml:
script.disable_dynamic: true

Запуск Elasticsearch

Чтобы запустить Elasticsearch, введите следующую команду:

sudo service elasticsearch start

Установка и настройка Kibana

Откройте домашний каталог:

cd ~

Загрузите Kibana:

curl -L https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz | tar xzf -
sudo cp -r kibana-3.1.0 /usr/share/

Настройка Kibana

Kibana будет использовать порт 80 для взаимодействия с Elasticsearch, что противоречит стандартному порту 9200. Потому нужно отредактировать конфигурационный файл config.js.

Откройте /usr/share/kibana-3.1.0/config.js и найдите в нём следующую строку:

elasticsearch: "http://"+window.location.hostname+":9200",

Замените её следующей строкой:

elasticsearch: "http://"+window.location.hostname+":80",

Установка и настройка Nginx

Примечание: В данном случае Nginx используется как прокси-сервер для настройки открытого доступа к панели Kibana (после базовой аутентификации).

Чтобы установить Nginx, введите:

sudo apt-get install nginx --yes

Kibana предоставляет удобный стандартный конфигурационный файл nginx.conf, который нужно немного подкорректировать.

Для начала загрузите конфигурационный файл из репозитория GitHub.

Затем отредактируйте полученный файл следующим образом (все изменения выделены красным):

#
# Nginx proxy for Elasticsearch + Kibana
#
# In this setup, we are password protecting the saving of dashboards. You may
# wish to extend the password protection to all paths.
#
# Even though these paths are being called as the result of an ajax request, the
# browser will prompt for a username/password on the first request
#
# If you use this, you'll want to point config.js at http://FQDN:80/ instead of
# http://FQDN:9200
#
server {
listen                *:80 ;
server_name           localhost;
access_log            /var/log/nginx/kibana.log;
location / {
root  /usr/share/kibana-3.1.0;
index  index.html  index.htm;
}

Затем перезапустите nginx:

$ sudo service nginx restart

Теперь можно открыть в браузере общую панель Kibana; укажите домен или IP-адрес сервера.

Установка и настройка Fluentd

Теперь осталось установить Fluentd. Для этого можно использовать td-agent, сборочную версию Fluentd, разработанную Treasure Data.

Установка Fluentd при помощи td-agent

Чтобы установить Fluentd, введите:

wget http://packages.treasuredata.com/2/ubuntu/trusty/pool/contrib/t/td-agent/td-agent_2.0.4-0_amd64.deb
sudo dpkg -i td-agent_2.0.4-0_amd64.deb

Установка плагинов для Fluentd

Для корректной работы Fluentd необходима пара плагинов:

  • out_elasticsearch: этот плагин позволяет Fluentd передавать данные Elasticsearch.
  • out_record_reformer: этот плагин позволяет обрабатывать данные в более удобном формате.

Следующие команды устанавливают эти плагины. Обратите внимание: плагин out_elasticsearch зависит от make и libcurl.

sudo apt-get install make libcurl4-gnutls-dev --yes
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer

Затем нужно настроить Fluentd для прослушивания сообщений syslog и перенаправления их на Elasticsearch. Откройте /etc/td-agent/td-agent.conf и добавьте следующие строки в начало файла:

<source>
type syslog
port 5140
tag  system
</source>
<match system.*.*>
type record_reformer
tag elasticsearch
facility ${tag_parts[1]}
severity ${tag_parts[2]}
</match>
<match elasticsearch>
type copy
<store>
type stdout
</store>
<store>
type elasticsearch
logstash_format true
flush_interval 5s #debug
</store>
</match>

Запуск Fluentd

Запустите Fluentd при помощи следующей команды:

sudo service td-agent start

Переадресация трафика rsyslog на Fluentd

Ubuntu 14.04 поставляется с сервером rsyslogd. Его нужно перенастроить для переадресации событий syslog на порт, прослушиваемый Fluentd (в данном примере 5140).

Откройте /etc/rsyslog.conf (с правами sudo) и добавьте следующую строку в начало файла:

*.* @127.0.0.1:5140

Сохраните и закройте файл, перезапустите rsyslogd:

sudo service rsyslog restart

Настройка панели Kibana

Стандартная панель Kibana имеет только общие функции, потому её рекомендуется настроить самостоятельно. Это можно сделать несколькими способами.

Метод 1: Шаблон

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

Чтобы использовать эту альтернативную конфигурацию, посетите страницу GitHub.

Обновите домашнюю страницу Kibana, после чего Kibana сможет отображать гистограммы для syslog, а также показывать последние строки логов.

Метод 2: Ручная настройка

Откройте панель Kibana, указав свой IP-адрес.

Kibana предоставляет несколько стартовых шаблонов настройки. Для примера выберем Blank Dashboard: I’m comfortable configuring on my own. После этого появится окно New Dashboard.

Нажмите кнопку + ADD A ROW в правой части панели. На экране появится экран настройки для нового ряда. Введите название, нажмите Create Row и Save.

Создав новый ряд, Kibana предложит добавить панель:

Add panel to empty row

Нажмите эту кнопку (слева). На экране появится экран настроек для добавления панели. Выберите histogram в выпадающем меню.

Гистограмма представляет собой временную диаграмму; для получения дополнительной информации обратитесь к документации Kibana.

Для настройки гистограмм существует множество параметров. Чтобы создать стандартную гистограмму, просто нажмите Save.

Примечание: Дополнительные инструкции по работе с Kibana можно найти здесь.

Tags: , , , , ,

Добавить комментарий