Что такое elk stack
1.Elastic stack: анализ security логов. Введение
В связи окончанием продаж в России системы логирования и аналитики Splunk, возник вопрос, чем это решение можно заменить? Потратив время на ознакомление с разными решениями, я остановился на решении для настоящего мужика — «ELK stack». Эта система требует времени на ее настройку, но в результате можно получить очень мощную систему по анализу состояния и оперативного реагирования на инциденты информационной безопасности в организации. В этом цикле статей мы рассмотрим базовые (а может и нет) возможности стека ELK, рассмотрим каким образом можно парсить логи, как строить графики и дашбоарды, и какие интересные функции можно сделать на примере логов с межсетевого экрана Check Point или сканера безопасности OpenVas. Для начала, рассмотрим, что же это такое — стек ELK, и из каких компонентов состоит.
«ELK stack» — это сокращение от трех проектов с открытым исходным кодом: Elasticsearch, Logstash и Kibana. Разрабатывается компанией Elastic вместе со всеми связанными проектами. Elasticsearch — это ядро всей системы, которая сочетает в себе функции базы данных, поисковой и аналитической системы. Logstash — это конвейер обработки данных на стороне сервера, который получает данные из нескольких источников одновременно, парсит лог, а затем отправляет в базу данных Elasticsearch. Kibana позволяет пользователям визуализировать данные с помощью диаграмм и графиков в Elasticsearch. Также через Kibana можно администрировать базу данных. Далее более детально рассмотрим каждую систему отдельно.
Logstash
Logstash – это утилита для обработки лог событий из различных источников, с помощью которой можно выделить поля и их значения в сообщении, также можно настроить фильтрацию и редактирование данных. После всех манипуляций Logstash перенаправляет события в конечное хранилище данных. Утилита настраивается только через конфигурационные файлы.
Типичная конфигурация logstash представляет из себя файл(ы) состоящий из нескольких входящих потоков информации (input), несколько фильтров для этой информации (filter) и несколько исходящих потоков (output). Выглядит это как один или несколько конфигурационных файлов, которые в простейшем варианте (который не делает вообще ничего) выглядит вот так:
В INPUT мы настраиваем на какой порт будут приходить логи и по какому протоколу, либо из какой папки читать новые или постоянно дозаписывающиеся файлы. В FILTER мы настраиваем парсер логов: разбор полей, редактирование значений, добавление новых параметров или удаление. FILTER это поле для управления сообщением которое приходит на Logstash с массой вариантов редактирования. В output мы настраиваем куда отправляем уже разобранный лог, в случае если это elasticsearch отправляется JSON запрос, в котором отправляются поля со значениями, либо же в рамках дебага можно выводить в stdout или записывать в файл.
ElasticSearch
Изначально, Elasticsearch – это решение для полнотекстового поиска, но с дополнительными удобствами, типа легкого масштабирования, репликации и прочего, что сделало продукт очень удобным и хорошим решением для высоконагруженных проектов с большими объемами данных. Elasticsearch является нереляционным хранилищем(NoSQL) документов в формате JSON, и поисковой системой на базе полнотекстового поиска Lucene. Аппаратная платформа — Java Virtual Machine, поэтому системе требуется большое количество ресурсов процессора и оперативки для работы.
Каждое приходящее сообщение, как с Logstash или с помощью API запроса, индексируется как “документ” – аналог таблицы в реляционных SQL. Все документы хранятся в индексе – аналог базы данных в SQL.
Пример документа в базе:
Вся работа с базой данных строится на JSON запросах с помощью REST API, которые либо выдают документы по индексу, либо некую статистику в формате: вопрос — ответ. Для того чтобы все ответы на запросы визуализировать была написана Kibana, которая представляет из себя веб сервис.
Kibana
Kibana позволяет искать\брать данные и запрашивать статистику из базы данных elasticsearch, но основе ответов строятся множество красивых графиков и дашбоардов. Также система имеет функционал администрирования базы данных elasticsearch, в последующих статьях мы рассмотрим более подробно данный сервис. А сейчас покажем пример дашбоардов по межсетевому экрану Check Point и сканеру уязвимостей OpenVas, которые можно будет построить.
Пример дашбоарда для Check Point, картинка кликабельна:
Пример дашбоарда по OpenVas, картинка кликабельна:
Заключение
Мы рассмотрели из чего состоит ELK stack, немного познакомились с основными продуктами, далее в курсе отдельно будем рассматривать написание конфигурационного файла Logstash, настройку дашбоардов на Kibana, познакомимся с API запросами, автоматизацией и много чего еще!
Ведение журналов с использованием эластичного стека
Существует множество хороших средств централизованного ведения журналов, которые изменяются по затратам от бесплатных средств с открытым исходным кодом до более дорогостоящих вариантов. Во многих случаях бесплатные инструменты должны быть как или более надежными, чем оплаченные предложения. Одним из таких инструментов является сочетание трех компонентов с открытым исходным кодом: Elasticsearch, Logstash и Kibana.
Вместе эти средства называются стеком эластичных баз данных или ELK.
Эластичный стек
Эластичный стек — это мощный вариант для сбора информации из кластера Kubernetes. Kubernetes поддерживает отправку журналов в конечную точку Elasticsearch, и в большинстве случаеввсе, что необходимо для начала работы, — задать переменные среды, как показано на рис. 7-5:
Рис. 7-5. Переменные конфигурации для Kubernetes
Этот шаг устанавливает Elasticsearch в кластере и целевой объект, отправляя в него все журналы кластера.
рис. 7-6. Пример панели мониторинга Kibana, в которой показаны результаты запроса к журналам, принимаемым из Kubernetes
Каковы преимущества эластичного стека?
Эластичный стек обеспечивает централизованное ведение журналов с экономичным, масштабируемым и облачным способом. Его пользовательский интерфейс упрощает анализ данных, позволяя тратить время на получение ценных сведений из данных вместо борьбы с интерфейсом неуклюжим. Он поддерживает широкий спектр входных данных, так как распределенное приложение охватывает больше и разных типов служб, поэтому вы можете продолжать работать с данными журналов и метрик в системе. Эластичный стек также поддерживает быстрый поиск даже в больших наборах данных, что делает возможным даже для больших приложений запись подробных данных в журнал и по-прежнему иметь возможность видеть их в удобном для себя виде.
Logstash
Первый компонент — Logstash. Это средство используется для сбора данных журнала из большого спектра различных источников. Например, Logstash может считывать журналы с диска, а также отправлять сообщения из библиотек ведения журналов, например Serilog. Logstash может выполнять некоторую базовую фильтрацию и расширение журналов по мере их поступления. Например, если журналы содержат IP-адреса, Logstash можно настроить для выполнения географического поиска и получения страны или даже города происхождения сообщения.
Рис. 7-7. Serilog config для записи сведений журнала непосредственно в logstash по протоколу HTTP
Logstash будет использовать конфигурацию, подобную показанной на рис. 7-8.
Рис. 7-8. Конфигурация Logstash для использования журналов из Serilog
Для сценариев, в которых не требуется много операций с журналами, существует альтернатива Logstash, известного какнезначительное. Ритм — это семейство средств, которое может собирать разнообразные данные из журналов в данные сети и сведения о времени работы. Многие приложения будут использовать как Logstash, так и ритмы.
После того, как журналы собраны с помощью Logstash, им нужно поместить их в любое место. Хотя Logstash поддерживает множество различных выходов, одна из самых интересных — Elasticsearch.
Elasticsearch
Elasticsearch — это мощная поисковая система, которая может индексировать журналы по мере их поступления. Он позволяет быстро выполнять запросы к журналам. Elasticsearch может обрабатывать огромные объемы журналов, и в крайних случаях их можно масштабировать на нескольких узлах.
Сообщения журнала, которые были созданы для хранения параметров или которых были разделены с помощью обработки Logstash, можно запрашивать напрямую, так как Elasticsearch сохраняет эти сведения.
Рис. 7-9. Запрос Elasticsearch для поиска 10 ведущих страниц, посещенных пользователем
Визуализация информации с помощью веб-панелей мониторинга Kibana
Последним компонентом стека является Kibana. Это средство используется для предоставления интерактивных визуализаций на веб-панели мониторинга. Панели мониторинга могут создаваться даже пользователями, которые не являются техническими. Большинство данных, находящихся в Elasticsearch индексе, могут быть добавлены на панели мониторинга Kibana. Отдельные пользователи могут иметь разную панель мониторинга, и Kibana обеспечивает эту настройку, позволяя пользователям просматривать панели мониторинга.
Установка эластичного стека в Azure
Эластичный стек можно установить в Azure множеством способов. Как всегда, можно подготавливать виртуальные машины и устанавливать эластичный стек на них напрямую. Этот вариант является предпочтительным для некоторых опытных пользователей, так как он обеспечивает наивысшую степень настройки. При развертывании на основе инфраструктуры в качестве службы вы узнаете о значительных затратах на управление, которые применяют этот путь, чтобы стать владельцем всех задач, связанных с инфраструктурой, таких как обеспечение безопасности компьютеров и обновление исправлений.
Параметр с меньшими издержками заключается в использовании одного из многих контейнеров DOCKER, для которых уже настроен эластичный стек. Эти контейнеры можно удалить в существующий кластер Kubernetes и запустить вместе с кодом приложения. Контейнер себп/Elk — это хорошо документированный и протестированный контейнер эластичного стека.
ELK Stack для хранения логов Django приложения
Каждый из проектов, который перерастает этап прототипа, нуждается в организации логирования. Грамотное логирования решает уйму проблем и помогает понять состояние проекта. На начальном этапе логирование в файл меня устраивало пока проект не разросся и поиск по логам не начал отнимать время.
Решением было создание централизованного лог хранилища с агрегацией логов и поиском. Выбор пал на ELK стек. ELK — сочетание трех OpenSource проектов: ElasticSearch, Logstash и Kibana. ELK хранит логи, строит графики и есть поддержка полнотекстового поиска с фильтрами. В статье описывается процесс настройки ELK стека для хранения логов Django приложения.
Установка ELK
Для установки ELK стека будет использоваться Docker, за основу взят репозиторий docker-elk. Изменим настройку Logstash-а, добавим GROK паттерн для матчинга nginx логов и изменим output секцию, чтобы логи Django приложения и nginx логи сохранялись в разных индексах ElasticSearch-а. В итоге logstash.conf выглядит так:
После внесения изменений запускаем стек:
После запуска стек слушает следующее порты:
Архитектура логирования
Рассмотрим архитектуру логирования Django приложения.
Как видно из схемы, приложение состоит из сервисов: nginx, django application, celery worker. Каждый из сервисов отправлял логи в ELK стек. Рассмотрим настройку каждого сервиса по отдельности.
Запись Nginx логов в ELK
Для работы с nginx логами потребуется дополнительный сервис Filebeat. Процесс установки Filebeat детально описан на официальном сайте. Пример установки Filebeat сервиса на Ubuntu сервер:
Filebeat будет читать логи из файла и отправлять в Logstash. Пример конфигурации:
Запускаем наш Filebeat сервис и наблюдаем за появлением логов в Kibana.
Запись Django логов в ELK
Для взаимодействия Django с сервисом Logstash установите дополнительный пакет Python-logstash.
Изменим настройки Django приложения, чтобы логи отправлялись в Logstash сервис.
После этого приложение будет отправлять логи в Logstash. Пример использования:
После этого настройте Kibana под себя, чтобы отображать необходимую информацию. Пример скриншотов собственной настройки:
Система собирает логи сервисов, позволяет по ним удобно искать, строить графики и визуализации, позволяя в кратчайшие сроки обнаружить и исправлять проблемы.
What is the ELK Stack?
Why, it’s the Elastic Stack.
Already know the story?
Get started with our hosted Elasticsearch Service (or hosted ELK, if you like) in minutes and
check out our getting started video.
So, what is the ELK Stack? «ELK» is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server‑side data processing pipeline that ingests data from multiple sources simultaneously, transforms it, and then sends it to a «stash» like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch.
The Elastic Stack is the next evolution of the ELK Stack.
It started with Elasticsearch…
The open source, distributed, RESTful, JSON-based search engine. Easy to use, scalable and flexible, it earned hyper-popularity among users and a company formed around it, you know, for search.
And it grew with Logstash and Kibana
A search engine at heart, users started using Elasticsearch for logs and wanted to easily ingest and visualize them. Enter Logstash, the powerful ingest pipeline, and Kibana, the flexible visualization tool.
The community got larger, the use cases more numerous
Whether it was to find the top N results in a jungle of text-based documents, analyze security events, or freely slice and dice metrics, the worldwide community kept pushing boundaries with ELK.
Then we dropped a Beat on ELK
«I just want to tail a file,» users said. And we listened. In 2015, we introduced a family of lightweight, single-purpose data shippers into the ELK Stack equation. We called them Beats.
So, where did that leave ELK?
In a funny position, really. Do we call it BELK? BLEK? ELKB? The threat of acronym alphabet soupification was real. For a stack so scalable, the acronym really wasn’t.
Enter, the Elastic Stack
The same open source products users know and love, only better integrated, more powerful, easier to get started with, and brimming with possibility.
Стек ELK
Что такое стек ELK?
ELK – это аббревиатура, используемая для описания стека из трех популярных проектов: Elasticsearch, Logstash и Kibana. Стек ELK, зачастую именуемый Elasticsearch, предоставляет возможность собирать журналы всех ваших систем и приложений, анализировать их и создавать визуализации, чтобы мониторить приложения и инфраструктуры, быстрее устранять неполадки, анализировать систему безопасности и многое другое.
E = Elasticsearch
Elasticsearch – это распределенный поисковый и аналитический движок на базе Apache Lucene. Он становится идеальным инструментом для различных примеров использования аналитики журналов и поиска благодаря поддержке различных языков, высокой производительности и документам JSON без схем. Подробнее »
21 января 2021 года Elastic NV объявила об изменении стратегии лицензирования программного обеспечения и о том, что новые версии Elasticsearch и Kibana под разрешительной лицензией Apache версии 2.0 (ALv2) выходить не будут. Вместо них предложены новые версии программного обеспечения по лицензии Elastic, а исходный код доступен по лицензии Elastic или SSPL. Эти лицензии не являются открытыми исходными кодами и не дают пользователям ту же свободу. Желая предоставить специалистам, которые работают с открытым исходным кодом, и нашим клиентам безопасный высококачественный комплект инструментов для поиска и аналитики с полностью открытым исходным кодом, мы создали проект OpenSearch – развиваемая сообществом ветвь открытого исходного кода Elasticsearch и Kibana с лицензией ALv2. Комплект OpenSearch состоит из поискового движка, OpenSearch и интерфейса визуализации и пользовательского интерфейса OpenSearch Dashboards.
L = Logstash
Logstash – это предназначенный для приема данных инструмент с открытым исходным кодом, который позволяет собирать данные из различных источников, преобразовывать их и отправлять в нужное место назначения. Благодаря встроенным фильтрам и поддержке более 200 подключаемых модулей Logstash обеспечивает пользователям простой доступ к данным независимо от их источника или типа. Подробнее »
K = Kibana
Kibana – это инструмент визуализации и изучения данных для просмотра журналов и событий. Kibana предлагает простые в использовании интерактивные диаграммы, встроенные агрегаторы и фильтры, а также геопространственную поддержку, благодаря чему является предпочтительным выбором для визуализации данных, хранящихся в Elasticsearch. Подробнее »
Стек ELK удовлетворяет потребности в сфере аналитики журналов. Когда большая часть ИТ-инфраструктуры перемещается в публичные облака, вам требуется решение для аналитики и управления журналами, которое позволит мониторить эту инфраструктуру, а также обрабатывать любые журналы серверов или приложений и данные навигации. Стек ELK дает простое, но надежное решение по анализу журналов для разработчиков и инженеров DevOps, которое позволяет получить полезные выводы из диагностики сбоев, производительности приложений и мониторинга инфраструктуры – за небольшую плату.
Почему стек ELK настолько популярен?
Потому что стек ELK удовлетворяет потребности в сфере аналитики журналов. Когда большая часть ИТ-инфраструктуры перемещается в публичные облака, вам требуется решение для аналитики и управления журналами, которое позволит мониторить эту инфраструктуру, а также обрабатывать любые журналы серверов или приложений и данные навигации. Стек ELK дает простое, но надежное решение по анализу журналов для разработчиков и инженеров DevOps, которое позволяет получить полезные выводы из диагностики сбоев, производительности приложений и мониторинга инфраструктуры – за небольшую плату.
Стек ELK. Выбор подходящего варианта
Вы можете развернуть стек ELK и управлять с помощью версий Elasticsearch и Kibana Apache 2.0 (до 7.10.2) под лицензией Apache 2.0 или самостоятельно управляемой альтернативой стека ELK с открытым исходным кодом через OpenSearch, OpenSearch Dashboards и Logstash. Вы предпочтете, чтобы разработчики или инженеры DevOps тратили время на создание инновационных приложений или управление операционными задачами, такими как развертывание, обновление, установка и исправление программного обеспечения, резервное копирование и мониторинг? Кроме того, вертикальное масштабирование в соответствии с нуждами вашего бизнеса или обеспечение безопасности и соответствия требованиям – это сложная задача при самостоятельном управлении.
Или выберите более простой, масштабируемый и безопасный вариант.
Знакомство с Amazon OpenSearch Service (преемник Amazon Elasticsearch Service)
Как начать работу с Amazon OpenSearch Service?
Вам повезло — мы создали пошаговое руководство, чтобы помочь вам на старте работы с Amazon OpenSearch Service. С уровнем бесплатного использования AWS вы можете запустить свой первый домен без риска и затрат.