- Импорт ключа GPG Elasticsearch
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- Добавление репозитория
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
- Устанавливаем elasticsearch
sudo dnf install --enablerepo=elasticsearch elasticsearch -y
- Активируем сервис elasticsearch
sudo systemctl enable elasticsearch
- Устанавливаем java. Совместимость версий можно проверить тут.
sudo dnf install java-1.8.0-openjdk -y
- Устанавливаем logstash
sudo dnf install --enablerepo=elasticsearch logstash -y sudo systemctl enable logstash
- Добавляем input для logstash
sudo vim /etc/logstash/conf.d/02-beats-input.conf
input { beats { port => 5066 } }
Elasticsearch - Данные на отдельном диске
Я привык класть данные приложений на отдельный диск. Если вам оно не надо, то просто пропускаем полностью эту главу.
- Разбиваем диск:
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
- Создаём файловую систему
sudo mkfs.ext4 /dev/sdj1
- Делаем 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
- Прописываем пути для 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"
- Создаём директории
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
- Стартуем elasticsearch и logstash
sudo systemctl start elasticsearch sudo systemctl start logstash
- Проверяем логи
sudo journalctl -u elasticsearch sudo journalctl -u logstash
- Останавливаем 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
Настройка кластера
- Правим 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
- Настраиваем файрволл
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
- Перезапускаем elasticsearch на каждой ноде
sudo systemctl restart elasticsearch
- Проверяем логи кластера
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
Комментарии