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

Как установить эластичный стек на Ubuntu 16.04


Elasticsearch – это поисковая система с открытым исходным кодом, основанная на Lucene и разработанная на языке java. Он предоставляет распределенную и многопользовательскую полнотекстовую поисковую систему с веб-интерфейсом HTTP Dashboard (Kibana) и схемой документов JSON. Elasticsearch — это масштабируемая поисковая система, которую можно использовать для поиска всех типов документов, включая файл журнала. Elasticsearch — это сердце Elastic Stack или ELK Stack.

Logstash – это инструмент с открытым исходным кодом для управления системными событиями и журналами. Он обеспечивает конвейерную обработку в реальном времени для сбора данных. Logstash соберет журнал или данные, преобразует все данные в документы JSON и сохранит их в Elasticsearch.

Kibana — это интерфейс визуализации данных для Elasticsearch. Kibana предоставляет симпатичную панель инструментов (веб-интерфейсы), она позволяет вам самостоятельно управлять и визуализировать все данные из Elasticsearch. Он не только красивый, но и мощный.

В этом руководстве я покажу вам, как установить и настроить Elastic Stack на одном сервере Ubuntu 16.04 для мониторинга журналов сервера и как установить Elastic beats на клиентские ПК с операционными системами Ubuntu 16.04 и CentOS 7.

Необходимое условие

  • Ubuntu 16.04, 64-разрядный сервер с 4 ГБ ОЗУ, имя хоста — elk-master
  • Клиент Ubuntu 16.04, 64-разрядная версия, 1 ГБ ОЗУ, имя хоста — elk-client1
  • Клиент CentOS 7, 64-разрядная версия, 1 ГБ ОЗУ, имя хоста — elk-client2

Шаг 1 — Установите Java

Java требуется для развертывания эластичного стека. Для Elasticsearch требуется Java 8. Рекомендуется использовать Oracle JDK 1.8. Мы установим Java 8 из репозитория PPA.

Установите новый пакет python-software-properties, чтобы мы могли легко добавить новый репозиторий с помощью команды apt.

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https

Добавьте новый репозиторий Java 8 PPA с помощью команды add-apt-repository, затем обновите репозиторий.

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

Установите Java 8 из репозитория PPA webpub8.

sudo apt-get install -y oracle-java8-installer

По завершении установки убедитесь, что Java правильно установлена в системе, проверив версию Java.

java -version

Шаг 2. Установите и настройте Elasticsearch.

На этом этапе мы установим и настроим Elasticsearch. Установите Elasticsearch из эластичного репозитория и настройте его для работы на локальном IP-адресе.

Перед установкой Elasticsearch добавьте на сервер ключ эластичного репозитория.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Добавьте эластичный репозиторий 5.x в каталог sources.list.d.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

Обновите репозиторий и установите Elasticsearch 5.1 с помощью приведенной ниже команды apt.

sudo apt-get update
sudo apt-get install -y elasticsearch

Установлен эластичный поиск. Теперь перейдите в каталог конфигурации и отредактируйте файл конфигурации elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Включите блокировку памяти для Elasticsearch, удалив комментарий в строке 43. Мы делаем это, чтобы отключить подкачку памяти для Elasticsearch, чтобы не перегружать сервер.

bootstrap.memory_lock: true

В блоке Network раскомментируйте строки network.host и http.port.

network.host: localhost
http.port: 9200

Сохраните файл и выйдите из vim.

Теперь отредактируйте файл службы elasticsearch для конфигурации блокировки памяти mlockall.

vim /usr/lib/systemd/system/elasticsearch.service

Раскомментируйте строку LimitMEMLOCK.

LimitMEMLOCK=infinity

Сохраните файл и выйдите.

Отредактируйте конфигурацию Elasticsearch по умолчанию в каталоге /etc/default.

vim /etc/default/elasticsearch

Раскомментируйте строку 60 и убедитесь, что значение не ограничено.

MAX_LOCKED_MEMORY=unlimited

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

Настройка Elasticsearch завершена. Elasticsearch будет работать под IP-адресом локального хоста с портом 9200, и мы отключили память подкачки, включив mlockall на сервере Ubuntu.

Перезагрузите файл службы Elasticsearch и включите его во время загрузки, затем запустите службу.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Подождите секунду, пока запустится Elasticsearch, затем проверьте открытый порт на сервере и убедитесь, что порт 9200 находится в состоянии LISTEN.

netstat -plntu

Затем проверьте блокировку памяти, чтобы убедиться, что mlockall включен. Также убедитесь, что Elasticsearch работает с приведенными ниже командами.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Ниже вы увидите результаты.

Шаг 3 — Установите и настройте Kibana с Nginx

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

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

sudo apt-get install -y kibana

Теперь отредактируйте файл конфигурации kibana.yml.

vim /etc/kibana/kibana.yml

Раскомментируйте строки server.port, server.hos и elasticsearch.url.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Сохраните файл и выйдите из vim.

Добавьте Kibana для запуска при загрузке и запустите его.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana будет работать на порту 5601 как узловое приложение.

netstat -plntu

Установка Kibana завершена, теперь нам нужно установить Nginx и настроить его как обратный прокси-сервер, чтобы иметь доступ к Kibana с общедоступного IP-адреса.

Затем установите пакеты Nginx и apache2-utils.

sudo apt-get install -y nginx apache2-utils

Apache2-utils — это пакет, содержащий инструменты для веб-сервера, которые также работают с Nginx, мы будем использовать базовую аутентификацию htpasswd для Kibana.

Nginx установлен. Теперь нам нужно создать новый файл конфигурации виртуального хоста в каталоге, доступном для сайтов Nginx. Создайте новый файл kibana с помощью vim.

cd /etc/nginx/
vim sites-available/kibana

Вставьте конфигурацию ниже.

server {
    listen 80;

    server_name elk-stack.co;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Сохраните файл и выйдите из vim.

Создайте новый файл базовой аутентификации с помощью команды htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD

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

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

Протестируйте конфигурацию nginx и убедитесь в отсутствии ошибок, затем добавьте nginx для запуска во время загрузки и перезапустите nginx.

nginx -t
systemctl enable nginx
systemctl restart nginx

Шаг 4 — Установите и настройте Logstash

На этом этапе мы установим и настроим Logsatash для централизации журналов сервера из клиентских источников с помощью filebeat, затем отфильтруем и преобразуем все данные (Syslog) и перенесем их в тайник (Elasticsearch).

Установите Logstash 5 с помощью приведенной ниже команды apt.

sudo apt-get install -y logstash

Отредактируйте файл hosts с помощью vim.

vim /etc/hosts

Добавьте IP-адрес сервера и имя хоста.

10.0.15.10    elk-master

Сохраните файл hosts и выйдите из редактора.

Теперь создайте новый файл сертификата SSL с помощью OpenSSL, чтобы клиентские источники могли идентифицировать эластичный сервер.

cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

Измените значение /CN на эластичное имя хоста сервера.

Файлы сертификатов будут созданы в каталоге /etc/logstash/.

Далее мы создадим файлы конфигурации для logstash. Мы создадим файл конфигурации filebeat-input.conf в качестве входного файла из filebeat, syslog-filter.conf для обработки системного журнала, а затем файл output-elasticsearch.conf для определения выходных данных Elasticsearch.

Перейдите в каталог конфигурации logstash и создайте новые файлы конфигурации в каталоге conf.d.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Введите конфигурацию, вставьте конфигурацию ниже.

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/logstash.crt"
    ssl_key => "/etc/logstash/logstash.key"
  }
}

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

Создайте файл syslog-filter.conf.

vim conf.d/syslog-filter.conf

Вставьте конфигурацию ниже.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Мы используем подключаемый модуль фильтра grok для анализа файлов системного журнала.

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

Создайте выходной файл конфигурации output-elasticsearch.conf.

vim conf.d/output-elasticsearch.conf

Вставьте конфигурацию ниже.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

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

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

sudo systemctl enable logstash
sudo systemctl start logstash

Шаг 5 — Установите и настройте Filebeat на клиенте Ubuntu

Подключитесь к серверу как root с учетной записью ssh.

ssh 

Скопируйте файл сертификата на клиент с помощью команды scp.

scp :/etc/logstash/logstash.crt .

Отредактируйте файл hosts и добавьте IP-адрес elk-master.

vim /etc/hosts

Добавьте приведенную ниже конфигурацию в конец файла.

10.0.15.10    elk-master

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

Теперь нам нужно добавить эластичный ключ на сервер elk-client1.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Мы будем использовать эластичный репозиторий с транспортом загрузки https, поэтому нам нужно установить пакет apt-transport-https на сервер.

sudo apt-get install -y apt-transport-https

Добавьте эластичный репозиторий и обновите все репозитории Ubuntu.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

Теперь установите filebeat с помощью команды apt.

sudo apt-get install -y filebeat

Затем перейдите в каталог конфигурации filebeat и отредактируйте файл filebeat.yml с помощью vim.

cd /etc/filebeat/
vim filebeat.yml

Добавьте новые файлы журнала в конфигурацию путей.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Установите тип документа syslog.

  document-type: syslog

Отключите вывод elasticsearch, добавив комментарии к строкам.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Включите вывод logstash, раскомментируйте конфигурацию и измените значение, как показано ниже.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

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

Переместите файл сертификата в каталог filebeat.

mv ~/logstash.crt /etc/filebeat/

Запустите filebeat и добавьте его для запуска во время загрузки.

sudo systemctl start filebeat
sudo systemctl enable filebeat

Проверьте статус службы.

sudo systemctl status filebeat

Шаг 6 — Установите и настройте Filebeat на клиенте CentOS

Beats — это поставщики данных, легкие агенты, которые можно установить на клиентских узлах для отправки огромных объемов данных с клиентского компьютера на сервер Logstash или Elasticsearch. Доступны 4 бита: Filebeat для файлов журналов, Metricbeat для метрик, Packetbeat для сетевых данных и Winlogbeat для журнала событий клиента Windows.

В этом руководстве я покажу вам, как установить и настроить Filebeat для отправки данных журнала на сервер logstash через безопасное соединение SSL.

Скопируйте файл сертификата с эластичного сервера на сервер client1. Войдите на сервер client1.

ssh 

Скопируйте файл сертификата с помощью команды scp.

scp :/etc/logstash/logstash.crt .
TYPE elk-server password

Отредактируйте файл hosts и добавьте адрес сервера elk-master.

vim /etc/hosts

Добавьте адрес сервера elk-master.

10.0.15.10    elk-master

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

Затем импортируйте эластичный ключ на сервер elk-client2.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Добавьте эластичный репозиторий на сервер.

cd /etc/yum.repos.d/
vim elastic.repo

Вставьте конфигурацию ниже.

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

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

Установите filebeat с помощью этой команды yum.

sudo yum -y install filebeat

Filebeat установлен, теперь перейдите в каталог конфигурации и отредактируйте файл filebeat.yml.

cd /etc/filebeat/
vim filebeat.yml

В строке 21 раздела путей добавьте несколько новых файлов журнала, здесь мы добавим два файла: /var/log/secure для активности ssh и /var/log/messages для журнала сервера.

  paths:
    - /var/log/secure
    - /var/log/messages

Добавьте новую конфигурацию в строку 26, чтобы определить тип файла для системного журнала.

  document-type: syslog

По умолчанию filebeat использует в качестве выходных данных elasticsearch. В этом уроке мы изменим его на logshtash. Отключите вывод elasticsearch, добавив комментарии к строкам 83 и 85.

Отключить вывод эластичного поиска.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Теперь добавьте новую конфигурацию вывода logstash, раскомментируйте конфигурацию вывода logstash и измените все значения на те, которые показаны в конфигурации ниже.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

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

Добавьте filebeat для запуска при загрузке и запустите его.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Теперь вы можете проверить и просмотреть файл журнала filebeat, чтобы убедиться, что он работает правильно.

tail -f /var/log/filebeat/filebeat

Шаг 8 — Тестирование

Откройте веб-браузер и зайдите в домен эластичного стека, который вы настроили в конфигурации nginx, мой — elk-stack.co, введите имя пользователя-администратора с паролем и нажмите Enter, чтобы войти в панель управления Kibana.

Создайте новый индекс по умолчанию filebeat-* и нажмите Создать.

Индекс по умолчанию создан. Если у вас есть несколько битов в эластичном стеке, вы можете настроить бит по умолчанию, просто нажав кнопку звездочка.

Перейдите в раздел Обнаружение, и вы увидите все файлы журналов с серверов elk-client1 и elk-client2.

Пример вывода JSON из журнала сервера elk-client1 для недопустимого входа в систему ssh.

И с приборной панелью Kibana вы можете сделать гораздо больше, просто попробуйте!

Elastic Stack был установлен на сервере Ubuntu 16.04, Filebeat был установлен на клиентских серверах Ubuntu и CentOS.

Ссылка