В данной статье мы расскажем и покажем как загрузить данные в Splunk, как строить поисковые запросы в системе на основе встроенного языка SPL и как можно их визуализировать. Это чисто практическая «How to» статья на основе тестовых данных, доступ к которым предоставляется свободно и доступен для скачивания всем желающим.
После прочтения и практического повторения Вы научитесь:
- Пользоваться базовым функционалом системы
- Загружать данные в Splunk
- Строить базовые поисковые запросы
- Визуализировать полученные результаты
Загрузка данных в систему
В системе можно выделить 5 основных источников сбора логов (это не полный список):
- Files and Directories: Splunk может разово забирать или мониторить конкретный файл или директорию с файлами, причем самостоятельно следит за изменением
- Network events: данные, поступающие с сетевых портов (syslog например)
- Windows sources: журналы событий (event log) Windows, события AD
- Scripted Inputs: данные собираемые посредством скриптов
- Modular Inputs: забор данных из специфических платформ, систем и приложений
В данной статье, для наглядности мы будем использовать наиболее простой метод. Мы просто загрузим тестовый файл в Splunk c локального компьютера. Понятно, что в истории с Enterprise использованием так никто не делает, и как раз используются варианты описанные выше вместе с агентами (forwarder), стоящими на целевых системах, и тогда инфраструктура выглядит следующим образом:
Но в нашем учебном примере, нам будет достаточно одного скаченного на локальный компьютер бесплатного Splunk Enterprise Free. Инструкции по установке вы можете найти в нашей предыдущей статье.
Теперь когда Вы скачали данные и установили Splunk их надо загрузить в него. На самом деле это достаточно просто (инструкция), потому что данные заранее подготовлены. Важно! Не нужно разархивировать архив.
SPL запросы
Ключевые особенности языка SPL:
- 140+ поисковых команд
- Синтаксис похож на Unix pipeline и SQL и оптимизирован на данные с временной отметкой
- SPL позволяет искать, фильтровать, модифицировать, обогащать, совмещать и удалять
- SPL включает функционал машинного обучения и поиска аномалий
Структура SPL:
Стандартно SPL запрос можно разделить на несколько этапов: фильтрация и выбор нужных данных, затем создание новых полей на основе уже существующих, затем агрегирование данных и вычисление статистик, и в конце переименование полей, сортировка другими словами облагораживание вывода.
После того как Вы загрузили данные в систему вы можете осуществлять поиски по ним (ниже примеры запросов, с результатами выполнения):
Поисковый интерфейс имеет следующий вид:
Поиск и фильтрация:
В Splunk можно «как в гугле» искать события по ключевому слову, или набору ключевых слов разделенных стандартными логическими операторами, примеры ниже. Также вы можете в любой момент актуализировать свой поиск, выбрав нужный вам временной интервал как в меню справа, так и центральной зеленой гистограмме, которая показывает количество событий в определенный период времени.
- Поиск по ключевому слову:
sourcetype=access* http
- Фильтрация:
sourcetype=access* http clientip=87.194.216.51
- Комбинация:
sourcetype=access* http clientip=87.194.216.51 (503 OR 504)
Вычисляемые поля (Eval):
Splunk может создавать новые поля на основе уже существующих, для этого используется команда eval, синтаксис и пример использования которой описан ниже. После того как мы создали какое-то поле, оно также может участвовать в дальнейших запросах.
- Вычисление нового поля:
sourcetype=access* | eval KB=bytes/1024
- Создание нового поля по условию:
sourcetype=access* | eval http_response=if(status!=200, "Error", "OK")
- Сцепление двух полей в новом:
sourcetype=access* | eval connection=clientip.":".other
Статистические запросы и визуализация:
После того как мы научились фильтровать и создавать новые поля переходим к следующему этапу — статистические запросы или агрегирование данных. Плюс все это естественно можно визуализировать. Для этих запросов вам потребуется загрузить в систему другой тестовый файл. Важно, на этапе загрузки поменять sourcetype csv на eq c помощью кнопки Save As, чтобы результаты запросов совпадали с нашими скриншотами.
- Вычисление:
sourcetype="eq" | stats avg(mag) AS "Средняя Магнитуда"
- Несколько вычислений:
?sourcetype="eq" | stats avg(mag) AS "Средняя Магнитуда", sparkline(avg(mag)) AS "Тренд"
- Сгруппируем по полю type ?
sourcetype="eq" | stats avg(mag) AS "Средняя Магнитуда", sparkline(avg(mag)) AS "Тренд" by type
Статистические запросы во времени:
Так как Splunk осуществляет все поиски во времени, то одно из самых распространенных команд является timechart, которая позволяет строить статистические запросы с привязкой ко времени, ниже примеры (тип визуализации можно выбрать в интерфейсе под закладками statistics, visualization и рядом с кнопкой format):
- Визуализация простой статистики по времени:
sourcetype="eq" | timechart avg(mag) as "Средняя магнитуда"
- Добавим линию тренда(алгоритм):
sourcetype="eq" | timechart avg(mag) as "Средняя магнитуда" | trendline sma5("Средняя магнитуда")
- Добавим прогнозные барьеры:
sourcetype="eq" | timechart avg(mag) as "Средняя магнитуда" | predict "Средняя магнитуда"
Заключение
В следующий раз мы расскажем про несколько интересных команд которые позволяют работать с данными в которых есть географические координаты и про то, как и откуда взять эти координаты если их нет, а также про группировки данных для выделения транзакций и выявления очередности событий.
Также хочу отметить супер полезный документ, содержащий в одном месте множество информации о Splunk — Quick Reference Guide.
Поделиться с друзьями
Комментарии (11)
AlexKulakov
17.03.2017 13:32Спасибо за вопрос!
А какие логи хотите собирать/анализировать? И зачем? Какая задача?chipoza
17.03.2017 13:40+1iis, логи net приложений, event логи, nginx, linux syslog.
Задача хранение, анализ, мониторинг и алерты, плюс разграниченный доступ до логов различных приложений.
AlexKulakov
17.03.2017 14:45На первый взгляд, Splunk под Вашу задачу подходит отлично. Но надо конечно предметно смотреть.
chipoza
Как раз сейчас рассматриваем систему сбора\анализа логов.
В чем плюсы и минусы в сравнении с graylog?
astalv
Splunk комплексный продукт, все от одного производителя — агенты, менеджмент, хранение, поиск и пр. Все хорошо отлажено и отзыв на продукт сугубо положительный. Следовательно на порядок проще поддержка, обслуживание, обновление и следовательно ниже стоимость владения.
Ну и функционал значительно шире, к примеру есть хитрые команды для объединения событий в группы, транзакции, подключения машинного обучения для прогнозирования будущего и выявления аномалий.
У graylog есть интеграция со Splunk, позволяет отправлять избирательно данные на Splunk, чтобы лицензия была дешевле.
b_oberon
Использовал Splunk в течение трех лет под задачи анализа логов. Объемы небольшие (несколько Гб в сутки), поэтому сервер всего один. За все время нареканий по работе продукта не было.
Из плюсов по сравнению с Graylog: большое количество готовых источников / коннекторов / интеграций, возможность крутить логи как угодно и выжимать из них аналитику, скорость получения результатов (т.е. обычно достаточно грамотного запроса без тяжелой артиллерии), простота расширения системы (подключение нестандартных источников, кастомные команды в языке запросов, кастомные дашборды и т.д.). Из минусов — стоимость.
С Graylog знаком (правда, довольно поверхностно), и если бы у меня сейчас стоял выбор между системами, то однозначно Splunk.
Для первого знакомства с возможностями я бы порекомендовал книжку https://www.splunk.com/web_assets/v5/book/Exploring_Splunk.pdf. Она написана для предыдущей версии, зато бесплатная. Мне в свое время пригодилась. Ну и не стоит забывать, что у Splunk есть пробная / бесплатная версия на 500 Мб/сутки.
vsarakoff
ELK как вариант?
chipoza
ELK не очень вариант, там по умолчанию никакого разграничения доступов, мониторинга и алертов. Есть плагин X-Pack но его ценник заставляет сразу же забыть о данном продукте.
AlexKulakov
В Splunk все это есть как базовый функционал…
b_oberon
Ну как сказать базовый… Разграничения доступа в бесплатной версии нет, про алерты не помню (если уж сравнивать с бесплатным ELK). Хотя если речь идет о Splunk, вряд ли кто-то всерьез рассматривает развертывание бесплатной лицензии.
AlexKulakov
То что у Splunk есть бесплатная версия до 500 Мб — это конечно очень круто, и некоторые компании даже продуктивно используют её для своих небольших задач, не покупая лицензию и не тратя денег.
Да, такие истории есть! Но Splunk изначально все таки проприетарный, небесплатный продукт. Поэтому сравнивать его бесплатную версию, с несколько урезанным функционалом с ELK наверно не очень корректно.
Под базовым подразумевалось, что этот функционал доступен из коробки при покупке лицензии.