Splunk. Введение в анализ машинных данных — часть 1. Примеры SPL запросов и визуализация логов

  • Tutorial


В данной статье мы расскажем и покажем как загрузить данные в 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 "Тренд"



  • Сгруппируем по полю typesourcetype="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.
TS Solution
142.51
Системный интегратор
Share post

Comments 11

    0
    Как раз сейчас рассматриваем систему сбора\анализа логов.
    В чем плюсы и минусы в сравнении с graylog?
      +1
      Splunk комплексный продукт, все от одного производителя — агенты, менеджмент, хранение, поиск и пр. Все хорошо отлажено и отзыв на продукт сугубо положительный. Следовательно на порядок проще поддержка, обслуживание, обновление и следовательно ниже стоимость владения.

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

      У graylog есть интеграция со Splunk, позволяет отправлять избирательно данные на Splunk, чтобы лицензия была дешевле.
        +1
        Использовал Splunk в течение трех лет под задачи анализа логов. Объемы небольшие (несколько Гб в сутки), поэтому сервер всего один. За все время нареканий по работе продукта не было.

        Из плюсов по сравнению с Graylog: большое количество готовых источников / коннекторов / интеграций, возможность крутить логи как угодно и выжимать из них аналитику, скорость получения результатов (т.е. обычно достаточно грамотного запроса без тяжелой артиллерии), простота расширения системы (подключение нестандартных источников, кастомные команды в языке запросов, кастомные дашборды и т.д.). Из минусов — стоимость.

        С Graylog знаком (правда, довольно поверхностно), и если бы у меня сейчас стоял выбор между системами, то однозначно Splunk.

        Для первого знакомства с возможностями я бы порекомендовал книжку https://www.splunk.com/web_assets/v5/book/Exploring_Splunk.pdf. Она написана для предыдущей версии, зато бесплатная. Мне в свое время пригодилась. Ну и не стоит забывать, что у Splunk есть пробная / бесплатная версия на 500 Мб/сутки.
          0
          ELK как вариант?
            0
            ELK не очень вариант, там по умолчанию никакого разграничения доступов, мониторинга и алертов. Есть плагин X-Pack но его ценник заставляет сразу же забыть о данном продукте.
              0
              В Splunk все это есть как базовый функционал…
                0
                Ну как сказать базовый… Разграничения доступа в бесплатной версии нет, про алерты не помню (если уж сравнивать с бесплатным ELK). Хотя если речь идет о Splunk, вряд ли кто-то всерьез рассматривает развертывание бесплатной лицензии.
                  0
                  То что у Splunk есть бесплатная версия до 500 Мб — это конечно очень круто, и некоторые компании даже продуктивно используют её для своих небольших задач, не покупая лицензию и не тратя денег.
                  Да, такие истории есть! Но Splunk изначально все таки проприетарный, небесплатный продукт. Поэтому сравнивать его бесплатную версию, с несколько урезанным функционалом с ELK наверно не очень корректно.

                  Под базовым подразумевалось, что этот функционал доступен из коробки при покупке лицензии.
          0
          Спасибо за вопрос!

          А какие логи хотите собирать/анализировать? И зачем? Какая задача?
            +1
            iis, логи net приложений, event логи, nginx, linux syslog.
            Задача хранение, анализ, мониторинг и алерты, плюс разграниченный доступ до логов различных приложений.
            0
            На первый взгляд, Splunk под Вашу задачу подходит отлично. Но надо конечно предметно смотреть.

            Only users with full accounts can post comments. Log in, please.