Сегодня для осмысления потоков данных, выявления ошибок и мониторинга производительности систем ELK Stack (Elasticsearch, Logstash, Kibana) стал незаменимым инструментом. В этой статье мы пошагово выполним установку двух основных компонентов ELK Stack — Elasticsearch и Kibana — на Ubuntu 22.04. Logstash рассмотрим в другой статье.
Предварительные требования
Перед началом установки убедитесь, что ваш сервер соответствует следующим требованиям:
- Не менее 4 ГБ ОЗУ (рекомендуется 8 ГБ)
- Ubuntu 20.04 или 22.04 LTS
- Java 11 или 17 (OpenJDK)
- Права root или доступ sudo
Проверьте версию Java командой java -version. Если Java не установлена, установите её: sudo apt install openjdk-11-jdk -y.
Установка Elasticsearch
1. Добавление GPG-ключа и репозитория
Чтобы добавить официальный репозиторий Elasticsearch, сначала импортируйте GPG-ключ:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Затем добавьте репозиторий в список:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
2. Установка пакета Elasticsearch
Обновите репозиторий и установите Elasticsearch:
sudo apt update && sudo apt install elasticsearch -y
После завершения установки включите автоматический запуск службы:
sudo systemctl enable elasticsearch
3. Редактирование файла конфигурации
Основной файл конфигурации находится в /etc/elasticsearch/elasticsearch.yml. Настроим базовые параметры: укажем сетевой адрес для внешнего доступа (не забудьте про брандмауэр). Откройте файл:
sudo nano /etc/elasticsearch/elasticsearch.yml
Добавьте или измените следующие строки:
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node (для одного узла)
Примечание: В производственной среде следует использовать multicast или unicast discovery. Этот пример для тестирования.
4. Запуск Elasticsearch
Сохраните конфигурацию и запустите службу:
sudo systemctl start elasticsearch
Проверьте статус службы: sudo systemctl status elasticsearch. Если она запущена, выполните следующую команду для проверки ответа Elasticsearch:
curl -X GET "localhost:9200/"
Вы должны увидеть примерно такой вывод:
{"name" : "node-1", "cluster_name" : "elasticsearch", ...}
Установка Kibana
1. Установка пакета Kibana
Kibana устанавливается из того же репозитория, поэтому выполните:
sudo apt install kibana -y
Затем включите службу:
sudo systemctl enable kibana
2. Конфигурация Kibana
Файл конфигурации Kibana находится в /etc/kibana/kibana.yml. Настройте подключение к Elasticsearch:
sudo nano /etc/kibana/kibana.yml
Измените следующие строки:
server.port: 5601
server.host: "0.0.0.0" (для внешнего доступа)
elasticsearch.hosts: ["http://localhost:9200"]
Если Elasticsearch находится на другом сервере, обновите hosts соответственно.
3. Запуск Kibana и доступ к веб-интерфейсу
Запустите службу:
sudo systemctl start kibana
Теперь откройте в браузере http://ip-сервера:5601. Загрузка Kibana может занять несколько секунд. При первом входе потребуется токен. Вы можете использовать enrollment token, созданный Elasticsearch, или сгенерировать новый с помощью команды /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana.
Настройка брандмауэра
Если вы используете брандмауэр, не забудьте открыть порты Elasticsearch (9200) и Kibana (5601):
sudo ufw allow 9200
sudo ufw allow 5601
В производственной среде применяйте более строгие правила.
Финальная проверка
Чтобы убедиться, что установка прошла успешно, откройте в Kibana раздел Index Management или выполните запрос в Dev Tools. Например, добавим документ в Elasticsearch:
curl -X POST "localhost:9200/test/_doc" -H "Content-Type: application/json" -d '{"mesaj":"Привет ELK"}'
Затем в Kibana в разделе Discover вы сможете увидеть этот индекс.
Заключение
Выполнив эти шаги, вы настроили базовый ELK Stack. Теперь вы можете отправлять системные логи в Elasticsearch и визуализировать их с помощью Kibana. Ждите нашу следующую статью о добавлении Logstash и создании более сложных пайплайнов.