Splunk. Введение в анализ машинных данных — часть 1. Примеры SPL запросов и визуализация логов +12
Системное администрирование, Сетевые технологии, Серверное администрирование, IT-инфраструктура, Блог компании TS Solution
Рекомендация: подборка платных и бесплатных курсов системных администраторов - https://katalog-kursov.ru/
В данной статье мы расскажем и покажем как загрузить данные в 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