Установка Elastic Stack на Ubuntu 16.04

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

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

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

В этой статье вы узнаете:

  • как установить и настроить Elastic стек на одном сервере Ubuntu 16.04 для мониторинга логов сервера
  • Как установить "Упругие удары" на клиентских компьютерах с 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 является обязательным условием для развертывания Elastic стек. Elasticsearch требует Java 8. Рекомендуется использовать Oracle JDK 1.8. Мы будем устанавливать Java 8 из репозитория PPA.

Установите новый пакет «python-программное обеспечение свойства», теперь мы можем легко добавить новый репозиторий с помощью командой 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 из хранилища Elastic и настроим его для работы на локальном хосте IP.

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

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

Добавить Elastic репозиторий 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 с помощью команды ниже.

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

Elasticsearch установлен. Теперь переходим в директорию конфигурации и отредактируем конфигурационный файл elasticsaerch.yml.

 cd /etc/elasticsearch/
vim elasticsearch.yml 

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

 bootstrap.memory_lock: true

В блоке "Сеть", разкомментировать 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 и убедитесь, что значение «unlimited».

MAX_LOCKED_MEMORY=unlimited 

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

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

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

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

Подождите секунду пока запускается Elasticsearch ,а затем установите флажок «Открыть порт на сервере», убедитесь , что «state» для порта 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 с помощью команды apt:

sudo apt-get install -y kibana 

Теперь отредактируйте платформу the kibana.yml configuration file.

vim /etc/kibana/kibana.yml 

Раскомментируйте server.port, server.hos and 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 

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

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, затем отфильтруем и преобразуем все данные (системный журнал) и транспортируем их в тайник (elasticsearch с).

sudo apt-get install -y logstash 

Редактируем файл hosts с vim.

 vim /etc/hosts

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

10.0.15.10 лося-мастер 

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

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

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

Измените '/СN' значение упругого сервера.

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

Далее мы будем создавать файлы конфигурации для logstash. Мы создадим конфигурационный файл 'syslog-filter.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 root@elk-client1 

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

scp root@elk-server:/etc/logstash/logstash.crt . 

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

vim /etc/hosts 
vim /etc/hosts 

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

10.0.15.10 elk-master

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

Теперь нам нужно добавить elastic key в elk-client1-сервер.

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

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

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

Добавьте elastic репозиторий и обновите все репозитории 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 

Выберите тип документа для системного журнала.

  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 клиента

Удары по фирмам-отправителям данных, легких агентов, которые могут быть установлены на клиентские узлы для отправки больших объемов данных с Клиентской машины на сервер elasticsearch или Logstash Есть 4 досступных вида ударов, 'Filebeat' для 'Лог-файлов', 'Metricbeat' для 'Метрика', 'Packetbeat' для 'сети передачи данных' и 'Winlogbeat для клиента Windows 'журнал событий'.

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

Скопируйте файл сертификата из сервера на компьютере client1. Логин к серверу клиент1.

 ssh root@elk-client2

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

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

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

vim /etc/hosts 

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

 10.0.15.10    elk-master 

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

Далее, импортируйте Elastic ключ к серверу элк-клиент2.

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

Добавьте Elastic репозиторий на сервер.

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 .

 #-------------------------- 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 - Тестирование

Откройте веб-браузер и посетите Elastic область стека, который вы настроили в конфигурации nginx, шахту 'elk-stack.co',введите имя пользователя администратора, пароль и нажмите Enter для входа в панели kibana.

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

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

Перейдите к 'открыть' и вы увидите все файлы журналов с и elk-client1 и elk-client2 сервера.

Пример выводных данных json из элк-клиент1 журналов сервера на неверный логин по SSH.

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

Elastic Стек был установлен на сервере под Ubuntu 16.04, filebeat установлена на Ubuntu и клиенте с CentOS.

2 комментарии

  • ant

    написал ant

    Четверг, 02 Май 2019 23:14

    Ошибка:

    vim sites-available/kibana

    Конфигурация не полная:

    server {
    listen 80;.....

  • Владимир Драч

    написал Владимир Драч

    Пятница, 03 Май 2019 16:02

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

Оставить комментарий

Ваше мнение очень важно для нас! Обязательно выскажите Ваши мысли, пожелания и критику! Не стесняйтесь задавать вопросы. Скорее всего, ответ появится уже через 2-3 дня. Спасибо заранее.

Go to top