Установка стека ELK на операционную систему Ubuntu 18.04

Обновлена 15 апреля 2024 г. в 08:50

Установка стека ELK на операционную систему Ubuntu 18.04

Данная статья описывает установку стека ELK на операционную систему семейства Linux — Ubuntu 18.04.

Стек ELK — это мощный набор инструментов для эффективного решения широкого спектра задач сбора, хранения и анализа данных:

Elasticsearch – решение для полнотекстового поиска, построенное поверх Apache Lucene и имеющее дополнительные удобства.
Logstash – утилита для сборки, фильтрации и последующего перенаправления в конечное хранилище данных. Этот механизм обеспечивает конвейер в реальном времени. Он может принимать данные из нескольких источников и преобразовывать их в документы JSON.
Kibana — приложение, позволяющее брать и искать данные из Elasticsearch и строить наглядные графики.

Операционная система Ubuntu версии 18.04.
Установленный веб-сервер Nginx.
Установленная виртуальная машина Java.
Пользователь с доступом к команде sudo.

По сравнению с веб-сервером Apache веб-сервер Nginx использует меньше ресурсов для размещения объемных сайтов с высоким трафиком. Благодаря архитектуре Nginx можно легко масштабироваться до сотен тысяч параллельных соединений.

Чтобы установить и выполнить первичную настройку веб-сервера Nginx:

Откройте окно терминала.

Обновите индексы пакетов, выполнив команду:

Установите веб-сервер Nginx, выполнив команду:

sudo apt install nginx -y

Для проверки работы веб-сервера запустите веб-браузер и в адресной строке введите IP-адрес веб-сервера.

Если установка выполнена успешно, откроется следующая страница веб-сервера:

Для работы стека ELK требуется виртуальная машина Java. Чтобы установить JVM:

Откройте окно терминала.

Установите программный пакет JVM, выполнив команду:

sudo apt install default-jre -y

В результате будет установлен пакет Java Runtime Environment (JRE).

Установите программный пакет JDK, включающий компилятор Java, стандартные библиотеки классов Java, примеры, документацию и различные утилиты. Для этого выполните команду:

sudo apt install default-jdk -y

Чтобы установить и выполнить первичную настройку Elasticsearch:

Для проверки текущей версии Elasticsearch, перейдите на страницу: https://www.elastic.co/downloads/elasticsearch.

Откройте окно терминала.

Импортируете открытый ключ GPG Elasticsearch, с использованием которого защищаются пакеты Elastic, выполнив команду:

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

Добавьте пакеты Elastic в каталог системных репозиториев sources.list.d, выполнив команду:

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

Обновите индексы пакетов, выполнив команду:

Установите Elasticsearch, выполнив команду:

sudo apt install elasticsearch

Внесите изменения в конфигурационный файл elasticsearch.yml. Для этого:

Откройте этот файл для редактирования, выполнив команду:

sudo nano /etc/elasticsearch/elasticsearch.yml

Найдите строку:

#network.host: 192.168.0.1

Замените ее на строку:

После редактирования конфигурационного файла .yml убедитесь, что в нем нет лишних пробелов и/или отступов!

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Запустите сервис Elasticsearch, выполнив команду:

sudo systemctl start elasticsearch

Проверьте статус запуска сервиса Elasticsearch, выполнив команду:

sudo systemctl status elasticsearch

Если отображается ошибка:

Выполните следующее:

Откройте файл, содержащий параметры виртуальной машины Java, выполнив команду:

sudo nano /etc/elasticsearch/jvm.options

Найдите параметры, определяющие минимальное и максимальное количество оперативной памяти для Java:

В параметрах -Xms1g и -Xmx1g укажите нужные значения. Например, для операционной системы с объемом оперативной памяти 1 ГБ, можно указать:

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Запустите сервис Elasticsearch и проверьте статус. В случае отсутствия ошибок отобразится следующее:

Чтобы при перезагрузке операционной системы сервис Elasticsearch запускался автоматически, выполните команду:

sudo systemctl enable elasticsearch

Для проверки доступа к сервису Elasticsearch отправьте HTTP-запрос, выполнив команду:

curl -X GET localhost:9200

Если установка Elasticsearch выполнена успешно, отобразится следующая информация:

Чтобы установить и выполнить первичную настройку Kibana, выполните следующее:

Убедитесь, что вы успешно установили Elasticsearch.

Откройте окно терминала.

Установите Kibana, выполнив команду:

Запустите Kibana, выполнив команду:

sudo systemctl start kibana

Чтобы при перезагрузке операционной системы сервис Kibana запускался автоматически, выполните команду:

sudo systemctl enable kibana

Для проверки статуса работы Kibana, выполните команду:

sudo systemctl status kibana

Внесите изменения в конфигурационный файл kibana.yml. Для этого:

Откройте этот файл, выполнив команду:

sudo nano /etc/kibana/kibana.yml

Найдите строку:

И замените ее на строку:

Найдите строку

#server.host: "localhost"

И замените ее на строку:

Найдите строку:

#elasticsearch.hosts: ["http://localhost:9200"]

И замените ее на строку:

elasticsearch.hosts: ["http://localhost:9200"]

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X

Создайте учетную запись администратора для доступа к веб-интерфейсу Kibana. Для этого выполните команду:

echo "mcskibadmin:\`openssl passwd -apr1\`" | sudo tee -a /etc/nginx/htpasswd.users

где mcskibadmin - логин учетной записи администратора, htpasswd.users - файл, в котором хранятся учетные данные.

Затем введите пароль.

Создайте файл с виртуальным сайтом для веб-сервера Nginx, выполнив команду:

sudo nano /etc/nginx/sites-available/elk

В этот файл добавьте следующую информацию:

server {    listen 80;     server_name <внешний IP-адрес веб-сервера>;     auth_basic "Restricted Access";    auth_basic_user_file /etc/nginx/htpasswd.users;     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;    }}

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Активируйте новую конфигурацию Nginx, выполнив команду:

sudo ln -s /etc/nginx/sites-available/elk /etc/nginx/sites-enabled/

Перезагрузите Kibana, выполнив команду:

sudo systemctl restart kibana

Перезагрузите веб-сервер Nginx, выполнив команду:

sudo systemctl restart nginx

Убедитесь, что синтаксис конфигурационного файла nginx не содержит ошибок, выполнив команду:

Чтобы установить и выполнить первичную настройку Logstash:

Установите Logstash, выполнив команду команду:

sudo apt install logstash

Создайте и настройте конфигурационный файл, содержащий правила приема информации с beats-агентов. Для этого:

Создайте файл 02-beats-input.conf, выполнив команду:

sudo nano /etc/logstash/conf.d/02-beats-input.conf

В этот файл добавьте строки:

input {  beats {    port => 5044  }}

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Создайте и настройте конфигурационный файл 30-elasticsearch-output.conf, содержащий правила хранения beats в информации Elasticsearch. Для этого:

Создайте файл 30-elasticsearch-output.conf, выполнив команду:

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

В этот файл добавьте следующие строки:

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

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Создайте файл, содержащий правила фильтрации и структуризации входящих данных. Для этого:

Создайте файл 10-system-filter.conf, выполнив команду:

sudo nano /etc/logstash/conf.d/10-logstash-filter.conf

В открывшийся файл поместите следующие строки:

input { stdin { } }filter {grok {   match => { "message" => "%{COMBINEDAPACHELOG}" }}date {   match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]}}output {elasticsearch { hosts => ["localhost:9200"] }stdout { codec => rubydebug }}

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Проверьте конфигурацию Logstash, выполнив команду:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Запустите Logstash, выполнив команду:

sudo systemctl start logstash

Чтобы при перезагрузке операционной системы сервис Logstash запускался автоматически, выполните команду:

sudo systemctl enable logstash

Filebeat позволяет собирать данные (beats) из различных источников и передавать их в Logstash или Elasticsearch в Linux-подобных системах.

Для установки Filebeat:

Откройте терминал.

Установите Filebeat, выполнив команду:

sudo apt install filebeat

Настройте конфигурационный файл filebeat.yml. Для этого:

Откройте этот файл:

sudo nano /etc/filebeat/filebeat.yml

Запретите Filebeat отправлять данные напрямую в Elasticsearch. Для этого найдите строки:

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

И замените их на строки:

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

Укажите сервису Filebeat использовать Logstash в качестве сборщика логов. Для этого найдите строки:

#output.logstash:      # The Logstash hosts      #hosts: ["localhost:5044"]

И замените их на строки:

output.logstash:    # The Logstash hosts    hosts: ["localhost:5044"]

Сохраните изменения, используя сочетание клавиш CTRL+O, и завершите редактирование, используя сочетание клавиш CTRL+X.

Включите модуль Logstash. Для этого выполните команду:

sudo sudo filebeat modules enable logstash

Для просмотра включенных модулей выполните команду:

sudo filebeat modules list

Загрузите шаблон индекса Elasticsearch, выполнив команду:

sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

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

sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Запустите Filebeat, выполнив команду:

sudo systemctl start filebeat

Чтобы при перезагрузке операционной системы сервис filebeat запускался автоматически, выполните команду:

sudo systemctl enable filebeat

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

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

Установка стека ELK завершена.

В адресной строке веб-браузера введите IP-адрес вашего Elastic-сервера. Для входа используйте учетные данные администратора . После успешной авторизации вы перейдете на основную страницу Kibana.