Настройка ELK (Elasticsearch, Logstash, Kibana) на VPS: мой первый стек для логов

ГлавнаяНастройка ELK (Elasticsearch, Logstash, Kibana) на VPS: мой первый стек для логов

Содержание

Когда я только начинала следить за состоянием серверов, логи казались мне чем-то второстепенным. Ну упала служба — перезапустила. Ну кто-то постучался на странный порт — ну и ладно. Но чем больше у меня становилось 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
    ,
    auth.log
    и логов Nginx.
  • Kibana для чайников — лучшее, что можно загуглить, если запутались.
  • Используйте индексацию по времени — тогда поиск не тормозит.
  • Не бойтесь использовать Logstash фильтры — grok действительно мощный.
  • Мониторьте память: Elasticsearch может начать поджирать весь RAM, если VPS слабый.

Альтернатива: можно ли проще?

Если вам ELK кажется избыточным — есть Lightweight решения вроде GoAccess или Netdata, но они не такие гибкие. Я пробовала их, но потом всё равно вернулась к Elastic Stack, особенно когда нужно было собирать логи с нескольких VPS.


Пример конфигурации компонентов ELK

КомпонентВерсияНазначениеПорт
Elasticsearch7.17.xХранение и поиск логов9200
Logstash7.17.xОбработка логов5044
Kibana7.17.xВеб-интерфейс и аналитика5601

Первый запуск ELK stack — это как собрать IKEA без инструкции: вроде понятно, но нюансов полно. Но когда всё работает — ощущение, что ты контролируешь всё. Я теперь вижу, кто лезет к моим VPS, какие ошибки происходят и когда. И если раньше я просматривала логи через

grep
, то теперь у меня дашборды, оповещения и чувство контроля.

Если вы сомневаетесь — просто попробуйте. На одной VPS это поднимается за пару часов, и результат того стоит.

Доверие — это взаимно

Оплачиваете 12 месяцев — получаете 13. Потому что нам важны долгосрочные отношения.

Месяц в подарок
COPIED
NEWCOMM COPIED