Что такое стек ELK?

Ответ

ELK — это популярный стек технологий с открытым исходным кодом для централизованного сбора, хранения, поиска и визуализации логов и данных в реальном времени. Он состоит из трех основных компонентов:

  1. Elasticsearch — распределенный поисковый и аналитический движок на базе Apache Lucene. Он хранит и индексирует данные, обеспечивая быстрый полнотекстовый поиск и агрегации.
  2. Logstash — серверный конвейер обработки данных. Он принимает, преобразует (парсит, фильтрует, обогащает) и отправляет данные в Elasticsearch.
  3. Kibana — веб-интерфейс для визуализации и анализа данных из Elasticsearch. Позволяет строить дашборды, графики и выполнять поиск.

Пример конфигурации Logstash для обработки логов приложения:

input {
  file {
    path => "/var/log/myapp/app.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} %{GREEDYDATA:message}" }
  }
  date {
    match => [ "timestamp", "ISO8601" ]
  }
}
output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "app-logs-%{+YYYY.MM.dd}"
  }
}

Основное применение в DevOps: мониторинг инфраструктуры и приложений, отладка инцидентов, анализ безопасности (SIEM) и бизнес-аналитика. Современный стек часто расширяется до Elastic Stack с добавлением Beats (легких агентов для сбора данных).

Ответ 18+ 🔞

Давай разберёмся, что за зверь такой этот ELK, а то название как будто про животных, а на деле — адская кухня для логов, где всё горит, но в хорошем смысле.

Представь себе: у тебя серверов — овердохуища, каждый орёт своими логами в разные файлы. Ты пытаешься найти, почему всё упало, а у тебя в глазах уже пелена от этих строчек. Вот чтобы не сойти с ума, умные люди склепали этот стек.

Короче, из чего он состоит:

  1. Elasticsearch. Это, блядь, сердцевина. Представь себе супер-библиотеку, где вместо книг — твои логи. Но библиотека не простая, а распределённая и умная. Ты ей кричишь: «Найди мне все ошибки про базу данных за последний час!», а она тебе через секунду вываливает всё, что нашла. Всё благодаря тому, что она не просто хранит, а заранее всё проиндексировала, как сумасшедшая.

  2. Logstash. Это такой универсальный шлюз-переработчик. К нему стекаются все логи со всех щелей. Он их принимает, обнюхивает, парсит, выковыривает из них даты, уровни ошибок, имена сервисов — короче, наводит порядок в этом бардаке. Без него Elasticsearch схавал бы просто кучу неструктурированного текста, в котором нихуя не найти.

  3. Kibana. Ну а это уже лицо всей этой истории. Веб-морда, в которой ты всё это богатство можешь увидеть. Не просто увидеть, а построить графики, дашборды с красивыми цветными полосочками и кружочками. Вместо того чтобы вручную копаться в запросах, ты одним взглядом видишь: о, а вот тут, сука, в 3:45 начался пиздец — ошибок стало в сто раз больше.

Вот смотри, как Logstash эту кашу и структурирует:

input {
  file {
    path => "/var/log/myapp/app.log" # Читаем вот этот файлик, где приложение рыгает логи
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  grok { # А вот тут магия. Берём сырую строку и выдираем из неё части.
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} %{GREEDYDATA:message}" }
  }
  date { # Говорим: "Эй, это же дата, считай её как дату, а не как текст!"
    match => [ "timestamp", "ISO8601" ]
  }
}
output {
  elasticsearch { # И закидываем уже причёсанные данные в нашу хранилку.
    hosts => ["http://elasticsearch:9200"]
    index => "app-logs-%{+YYYY.MM.dd}" # Каждый день в новый индекс, чтобы не срастить всё в одну кучу.
  }
}

Зачем это всё в DevOps? Да всё просто, чувак!

  • Мониторинг: Вместо того чтобы бегать по серверам с tail -f, ты сидишь в Kibana и смотришь, как всё живёт на одном экране.
  • Расследование инцидентов: Что-то упало? Не надо гадать. Ты вбиваешь в поиск имя сервиса, временной промежуток и через пару кликов уже видишь полную цепочку событий: что предшествовало падению, какие ошибки вылезли первыми. Спасённые нервы стоят дорого.
  • Безопасность (SIEM): Кто, откуда и как часто пытается к тебе подобраться? ELK всё соберёт и покажет.
  • Аналитика: Сколько запросов в секунду, какие эндпоинты самые медленные, откуда идёт трафик — вся бизнес-хуйня, которая помогает принимать решения.

Сейчас эту троицу часто расширяют лёгкими агентами Beats (Filebeat для логов, Metricbeat для метрик). Они вместо тяжеловесного Logstash могут сразу аккуратно отправлять данные в Elasticsearch. Так что стек теперь правильнее называть Elastic Stack, но все по старой памяти говорят ELK. Суть-то не меняется — это, блядь, must have в арсенале, если у тебя больше одного сервера.