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




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


К сожалению, не доступен сервер mySQL