Когда я только начинала следить за состоянием серверов, логи казались мне чем-то второстепенным. Ну упала служба — перезапустила. Ну кто-то постучался на странный порт — ну и ладно. Но чем больше у меня становилось VPS — для сайтов, клиентов, тестов — тем сильнее я осознавала: без нормального логирования ты просто в темноте.
В этой статье расскажу, как я настроила ELK stack — он же Elasticsearch, Logstash, Kibana — на обычном VPS с Ubuntu, и что я из этого вынесла. Всё по-человечески, с объяснением, зачем каждая часть нужна и как не заблудиться на первом этапе.
Зачем вообще нужен ELK?
Если коротко: ELK позволяет собирать, хранить и красиво визуализировать логи. Это может быть что угодно: системные сообщения, ошибки приложений, логи Nginx, сообщения из Docker — всё, что выводит текст. Без визуального представления вы либо не заметите проблему, либо увидите её слишком поздно. А с Kibana, например, можно буквально за 2 минуты увидеть резкий всплеск 500-х ошибок.
Что входит в стек ELK?
- Elasticsearch — поисковый движок, куда складываются и индексируются все логи.
- Logstash — обработчик логов: читает, фильтрует, парсит и передаёт их в Elasticsearch.
- Kibana — веб-интерфейс для визуализации логов и построения дашбордов.
Иногда к этому стеку добавляют Beats, но я обошлась без него. В этой статье я покажу, как установить всё на одном VPS.
Установка и настройка ELK на VPS
📌 VPS: Ubuntu 22.04, 2 CPU, 4GB RAM — этого достаточно для базового ELK, особенно для одного проекта.
1. Установка Elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-add-repository "deb https://artifacts.elastic.co/packages/7.x/apt stable main" sudo apt update && sudo apt install elasticsearch
После установки не забудьте отредактировать конфиг:
sudo nano /etc/elasticsearch/elasticsearch.yml
Добавьте:
network.host: localhost discovery.type: single-node
Запускаем:
sudo systemctl enable elasticsearch sudo systemctl start elasticsearch
Проверка:
curl -X GET "localhost:9200/"
2. Установка Logstash
sudo apt install logstash
Для начала работы создаём простой конфиг:
sudo nano /etc/logstash/conf.d/syslog.conf
Пример:
input { file { path => "/var/log/syslog" type => "syslog" } } filter { grok { match => { "message" => "%{SYSLOGBASE} %{GREEDYDATA:message}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "syslog-%{+YYYY.MM.dd}" } }
Запускаем:
sudo systemctl enable logstash sudo systemctl start logstash
3. Установка Kibana
sudo apt install kibana
Конфиг:
sudo nano /etc/kibana/kibana.yml
Добавьте:
server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]
Запуск:
sudo systemctl enable kibana sudo systemctl start kibana
Теперь Kibana доступна по порту 5601. Не забудьте открыть его в фаерволе!
Что было дальше
После запуска Kibana я немного зависла — интерфейс кажется сложным. Но я пошла по пути: «не всё сразу». Начала с простого — построила граф по количеству логов за сутки. Потом — фильтрация по IP, а позже настроила оповещения на Telegram, когда происходили ошибки уровня “crit”. В сочетании с fail2ban это оказалось мощным решением.
Полезные советы
- Для начала не подключайте сразу все логи — начните с ,
/var/log/syslog
и логов Nginx.auth.log
- Kibana для чайников — лучшее, что можно загуглить, если запутались.
- Используйте индексацию по времени — тогда поиск не тормозит.
- Не бойтесь использовать Logstash фильтры — grok действительно мощный.
- Мониторьте память: Elasticsearch может начать поджирать весь RAM, если VPS слабый.
Альтернатива: можно ли проще?
Если вам ELK кажется избыточным — есть Lightweight решения вроде GoAccess или Netdata, но они не такие гибкие. Я пробовала их, но потом всё равно вернулась к Elastic Stack, особенно когда нужно было собирать логи с нескольких VPS.
Пример конфигурации компонентов ELK
Компонент | Версия | Назначение | Порт |
---|---|---|---|
Elasticsearch | 7.17.x | Хранение и поиск логов | 9200 |
Logstash | 7.17.x | Обработка логов | 5044 |
Kibana | 7.17.x | Веб-интерфейс и аналитика | 5601 |
Первый запуск ELK stack — это как собрать IKEA без инструкции: вроде понятно, но нюансов полно. Но когда всё работает — ощущение, что ты контролируешь всё. Я теперь вижу, кто лезет к моим VPS, какие ошибки происходят и когда. И если раньше я просматривала логи через
grep
Если вы сомневаетесь — просто попробуйте. На одной VPS это поднимается за пару часов, и результат того стоит.
Доверие — это взаимно
Оплачиваете 12 месяцев — получаете 13. Потому что нам важны долгосрочные отношения.