1. Импорт ключа GPG Elasticsearch
    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    
  2. Добавление репозитория
    sudo vim /etc/yum.repos.d/elasticsearch.repo
    
    [elasticsearch] 
    name=Elasticsearch repository for  7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=0
    autorefresh=1
    type=rpm-md
    
  3. Устанавливаем elasticsearch
    sudo dnf install --enablerepo=elasticsearch elasticsearch -y
    
  4. Активируем сервис elasticsearch
    sudo systemctl enable elasticsearch
    
  5. Устанавливаем java. Совместимость версий можно проверить тут.
    sudo dnf install java-1.8.0-openjdk -y
    
  6. Устанавливаем logstash
    sudo dnf install --enablerepo=elasticsearch logstash -y
    sudo systemctl enable logstash
    
  7. Добавляем input для logstash
    sudo vim /etc/logstash/conf.d/02-beats-input.conf
    
    input {
      beats {
     port => 5066
      }
    }
    

Elasticsearch - Данные на отдельном диске

Я привык класть данные приложений на отдельный диск. Если вам оно не надо, то просто пропускаем полностью эту главу.

  1. Разбиваем диск:
    sudo fdisk /dev/sdj
    
    `Command (m for help):` n
    `Partition number (1-128, default 1):`
    `First sector (34-209715166, default 2048):`
    `Last sector, +sectors or +size{K,M,G,T,P} (2048-209715166, default 209715166):`
    `Command (m for help):` w
    
  2. Создаём файловую систему
    sudo mkfs.ext4 /dev/sdj1
    
  3. Делаем mount корневой директории к диску
    sudo mkdir /elk
    sudo blkid
    sudo vim /etc/fstab
    
    UUID=7fe84fac-c810-42c6-b07f-296fab192d75 /elk                    ext4    defaults        1 2
    
    sudo mount -a
    df -h
    
  4. Прописываем пути для elasticsearch
    sudo vim /etc/elasticsearch/elasticsearch.yml
    
    path.data: /elk/data
    path.logs: /elk/logs
    
    sudo vim /etc/sysconfig/elasticsearch
    
    ES_TMPDIR=/elk/tmp
    
    sudo vim /etc/default/logstash
    
    LS_JAVA_OPTS="-Djava.io.tmpdir=/elk/logstash/tmp" 
    
  5. Создаём директории
    sudo mkdir -p /elk/data /elk/tmp /elk/logs /elk/logstash/tmp
    sudo chown elasticsearch /elk/data /elk/tmp /elk/logs
    sudo chown logstash:logstash /elk/logstash/tmp
    
  6. Стартуем elasticsearch и logstash
     sudo systemctl start elasticsearch
     sudo systemctl start logstash
    
  7. Проверяем логи
    sudo journalctl -u elasticsearch
    sudo journalctl -u logstash
    
  8. Останавливаем elasticsearch и logstash
    sudo systemctl stop elasticsearch
    sudo systemctl stop logstash
    

Elk кластер

Рекомендуется собирать multi-node кластер для лучшей работы elk и отказоустойчивости. Поэтому все действия выше повторяются на других нодах, которые будут находиться в кластере.

Конфигурация кластера

Имя кластера: my-cluster

Хосты кластера: elk-node1.my.lan, elk-node2..my.lan, elk-node3.my.lan

Настройка кластера

  1. Правим elasticsearch.yml на каждой ноде
    sudo vim /etc/elasticsearch/elasticsearch.yml
    
    http.port: 9122
    transport.tcp.port: 9322
    #тут меняем имя для каждой ноды
    network.host: elk-node1.my.lan
    #тут меняем имя для каждой ноды, должно совпадать с именем хоста
    node.name: elk-node1
    cluster.name: my-cluster
    discovery.zen.ping.unicast.hosts: ["elk-node3.my.lan", "elk-node2.my.lan","elk-node1.my.lan"]
    discovery.zen.minimum_master_nodes: 2
    bootstrap.memory_lock: true
    
  2. Настраиваем файрволл
    sudo firewall-cmd --add-port=80/tcp --permanent
    sudo firewall-cmd --add-port=9322/tcp --permanent
    sudo firewall-cmd --add-port=9122/tcp --permanent
    sudo firewall-cmd --reload
    
  3. Перезапускаем elasticsearch на каждой ноде
    sudo systemctl restart elasticsearch
    
  4. Проверяем логи кластера
    tail -f /elk/logs/my-cluster.log
    

Включение memory locking

Если вдруг получаем ошибку memory locking requested for elasticsearch process but memory is not locked, то включаем memory locking.

sudo mkdir /etc/systemd/system/elasticsearch.service.d
sudo vim /etc/systemd/system/elasticsearch.service.d/override.conf
[Service]  
LimitMEMLOCK=infinity
sudo systemctl daemon-reload
sudo systemctl restart elasticsearch