Управляем логами с ELK

10/09/2019

ELK

Сколько себя помню в IT профессии, анализ и обработка логов — были всегда актуальной задачей. Оборудование и программное обеспечение постоянно генерируют лог записи о своей жизнедеятельности. И чем больше у Вас техники под управлением, тем больше массив данных, который ежедневно генерируется. Раньше были очень дорогие платные решения, типа HP ArcSight Logger, а также бесплатные опенсорсные как Adiscon LogAnalyzer. Но если первый тип продуктов, во-первых, был очень дорогим и недоступным для многих, а во-вторых, крайне «тяжелым» в эксплуатации. То второй тип программного обеспечения давал очень мало нужного функционала, слабо масштабировался и плохо проводил аналитику имеющихся логов. С приходом на IT сцену ELK — картина радикально поменялась. ELK или комплекс продуктов на базе Elastic Stack эффективно позволяет решать любые задачи с обработкой, хранением и визуализацией массивов логов различных устройств и программного обеспечения.

Сам по себе стек Elastic состоит из ряда отдельных продуктов, таких как Elasticsearch, Kibana, Logstash и ряда других. Однако все они взаимодополняют друг друга, работая как одно общее целое. Поэтому, принято говорить о работе всего стека ELK, который обрабатывает массив поступающей информации, позволяя ее эффективно анализировать и визуализировать. Elasticsearch — это ядро всего этого комплекса, которое отвечает за поиск нужной информации во всем массиве данных. Kibana — красивая визуальная среда, которая позволяет комфортно взаимодействовать с системой ELK ее пользователям. Ну а Logstash — это программное обеспечение, ответственное за прием данных из внешних источников и их обработку таким образом, чтобы дальше было легко их искать и анализировать.

Возможности

Процесс установки и первоначальной настройки ELK не сложен и описан во многих мануалах в Интернете. Как пример этого, для системы Centos 7 можно использовать эту статью. После ряда простых шагов, Вы получите установленные сервисы ElasticSearch, Kibana и Logstash. В качестве веб интерфейса всем этим делом используется Kibana. По умолчанию она устанавливается, как веб сервис, доступный по TCP/5601 порту. Для его защиты рекомендую использовать Nginx, настроенный как реверс прокси. Как это сделать, читаем тут.

Сама специфичная настройка стека ELK под нужды пользователей начинается с Logstash. Именно он принимает поток логов от приложений и оборудования, обрабатывает их запрограммированным образом и передает в ElasticSearch. Основная конфигурация Lostash происходит в командной строке в директории /etc/logstash/conf.d/. Именно здесь мы описываем, что принимать, как это обработать и сохранить.

В качестве примера приведу несколько типовых конфигураций. Так конфигурационный файл, который отвечает за прием логов по протоколу syslog в Logstash будет выглядеть следующим образом.

input {
  tcp {
    type => "syslog"
    port => 514
  }
}
input {
  udp {
    type => "syslog"
    port => 514
  }
}      

Конфигурационный файл, ответственный за передачу данных из Logstash в ElasticSearch, представлен ниже.

output {
        elasticsearch {
                hosts => ["http://localhost:9200"]
                index => "logstash-example-%{+YYYY.MM.dd}" }
} 

Другие файлы занимаются обработкой полученных логов с помощью плагина фильтрации grok. Этот плагин тема отдельной большой статьи. Он позволяет с помощью regex выражений и соответствующего преобразования совершать практически любые преобразования поступающей информации. Обязательно постараюсь в дальнейшем осветить тему создания и конфигурации фильтров grok в отдельной статье.

Следующий компонент ELK, с которым большую часть времени придется работать пользователю — это Kibana.

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

Слева Вы видите основные разделы Kibana. Это своеобразной main menu, которое позволяет быстро обратиться к нужному функционалу. Так в разделе Discover можно найти информацию, которая поступила через logstash в ElasticSearch. С помощью интуитивно понятных фильтров данная информация легко фильтруется и ищется то, что нужно в данный момент. В разеделе Visualize происходит графическое представление поступающей информации. Тут с помощью заданных шаблонов и определеяемых пользователем фильтров можно красиво представить имеющиеся данные. Пример такой визуализации привожу ниже на скриншоте.

Способов визуализации информации достаточно много в рамках ELK. Это делает Elastic Stack ценнейшим инструментом анализа собираемых данных. По моему мнению, он в своей нише на данный момент вне конкуренции. При этом не важен источник информации. Анализ может производиться, к примеру, как по логам веб сервера Apache, так и по логам межсетевого экрана. Спектр поддерживаемого оборудования и программного обеспечения широчайшний. Что-то будет работать сразу из коробка. Для чего-то придется поработать ручками и головой, создавая необходимые конфигурации.

Остальные разделы в интерфейсе Kibana такие как Dashboards, Canvas, Maps и т.д. дают дополнительные возможности по анализу и систематизации логов. В целом система очень продвинутая с богатым фунционалом. Любому администратору или IT/ИБ директору она позволит эффективно решать вопросы по анализу логов практически от всех IT систем.

Резюме

Эта небольшая статья призвана познакомить моих читателей с проблематикой управления логами в современном мире IT. А также показать как этот вопрос изящно можно решать с помощью программного обеспечения Elastic Stack. В частности, для специалиствов по Информационной Безопасности имеются широкие возможности для выявления подозрительной активности. Последние версии ELK включают в себя функционал SIEM. То есть, Вам можно будет не использовать еще отдельное сложное решение по корреляции логов. Это, а также другие варианты использования делают Elastic одним из незаменимых инструментов ITшника.

Управляем логами с ELK: 4 комментария

  1. Система классная, не спорю, но java эта блин, ресурсов надо побольше, плата за кросс-платформенность)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *