Как загрузить нестандартный лог в Splunk + логи Fortinet

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

zbq-lfsagv_jhgsisvtmacj4quk.png

Splunk может индексировать данные с различных источников, которые могут хранить логи как локально на одной машине с Splunk-индексером, так и на удаленном устройстве. Для сбора данных с удаленных машин на них ставится специальный агент — Splunk Universal Forwarder, который будет отправлять данные на индексер.

Splunk предлагаем множество уже готовых приложений и надстроек (Add-ons) с предварительно настроенными параметрами для загрузки определенного типа данных, например Add-on есть для данных, генерируемых Windows, Linux, Cisco, CheckPoint и тд. Всего на данный момент создано более 800 аддонов, которые можно найти на сайте SplunkBase.

Типы источников данных


Все поступающие данные можно разделить на несколько групп по их источникам:

Файлы и каталоги

Большинство данных поступает в Splunk непосредственно из файлов и каталогов. Необходимо просто указать путь к каталогу, из которого вы хотите забирать данные и после этого он будет постоянного его мониторить и по мере появления новых данных они будут сразу подгружаться в Splunk. Далее в этой статье мы покажем, как это реализуется.

Сетевые события

Также Splunk может индексировать данные с любого сетевого порта, например удаленные данные syslog или других приложений, которые передают данные по TCP или UDP порту. Этот тип источника данных мы далее рассмотрим на примере Fortinet.

Источники Windows

Splunk позволяет настраивать загрузку множества различных данных
Windows, например данные журнала событий, реестра, WMI, Active Directory, а также данные мониторинга производительности. Более подробно о загрузке данных из Windows в Splunk мы писали в предыдущей статье. (ссылка)

Другие источники данных

  • Метрики
  • Скрипты
  • Кастомные модули загрузки данных
  • HTTP Event Collector


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

Fortinet


В данном разделе мы разберем, как реализовать загрузку логов Fortinet.

1. Сначала необходимо скачать Add-on с сайта SplunkBase по этой ссылке.

2. Далее необходимо установить его на Ваш Splunk-indexer (Apps — Manage Apps — Install app from file).

3. Затем настраиваем прием данных по порту UDP. Для этого необходимо пройти: Settings — Data Inputs — UDP — New. Указываем порт, по умолчанию это 514 порт.

8ymmjixd3k886vmpwxb9wvjnsl4.png

Выбираем Sourcetype: fgt_log, также выбираем необходимый индекс или создаем новый.

pfimbkjmqbgnr-nozw1nemcgh7y.png

4. Настраиваем отправку данных по UDP в самом Fortinet, указывая такой же порт, что и в Splunk.
5. Получаем данные и строим аналитику.

bnqxmbbhtspfowdk_nlgsmn93oq.png

i2o9uprrlurr1cvjmvg8lp0omfs.png

Нестандартный лог


Под нестандартным логом мы будем понимать лог, который имеет неизвестный для Splunk sourcetype, и поэтому не имеет заранее прописанных правил разбора на поля. Для того чтобы получить значения полей необходимо будет предварительно совершить несколько несложных манипуляций.

На примере этого лога помимо разбора мы покажем, как реализовать загрузку данных из каталогов. Есть два сценария развития, которые зависят от того, где лежат данные: на локальной машине индексера или на удаленной машине.

Локальная машина


Если Ваши данные хранятся на локальной машине Splunk, то загрузка осуществляется очень легко:
Settings — Add data — Monitor — Files & Directories

uovlp9niep4rm9gh2difrv7clzy.png

Выбираем необходимый каталог, если необходимо можем прописать Whitelist или Blacklist.
Выбираем индекс или создаем новый, остальное по дефолту.

rgtrjxrz5afuxe-xqn3oemies1w.png

Удаленная машина


Если каталог, в котором хранятся нужные данные находится на удаленной машине, то алгоритм действия будет несколько другим. Для забора данных нам понадобится агент на целевой машине (Splunk Universal Forwarder), настроенный Forwarder Management на Splunk индексере, приложение sendtoindexer и приложение которое расскажет какие каталоги мы будет просматривать.

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

Создадим специальное приложение, которое будет отвечать на то, чтобы агент пересылал данные из указанных каталогов.

qelwtclkkgkdsulruon-ra6zgzi.png

Приложение автоматически сохраняется в папке …splunk/etc/apps, необходимо перенести его в папку …splunk/etc/deployment-apps.

В папку …monitor/local необходимо поместить конфигурационный файл inputs.conf, в котором мы укажем какие папки необходимо пересылать.
Мы хотим просматривать папку test, лежащую в корневом каталоге.
[monitor:///test]
index=test
disabled = 0

Подробнее о файлах inputs.conf можно прочитать на официальном сайте.

Добавляем приложение в Server Class, относящийся к целевой машине. Как и зачем это необходимо делать, мы говорили в предыдущей статье.

На напомним, что это можно сделать, пройдя по следующему пути: Settings — Forwarder Management.

Для того, чтобы данные загружались необходимо, чтобы существовал индекс, который был указан в inputs.conf, если его нет, то создайте новый.

Парсинг данных


После загрузки мы получили данные не разделенные на поля. Для того чтобы выделить поля необходимо перейти в меню Extract Fields (All Fields — Extract New Fields)

u2grhck2mci2b9yi-d7ujia_tbg.png

Разбирать на поля можно с помощью встроенного инструментария, который на основе регулярных выражений выделит поля, которые вы укажете. Либо можно самостоятельно прописать регулярное выражение, если результат автоматической работы вас не устраивает.

Шаг 1. Выбираем поле

_08dchisnaojerhsmoolbvkeks0.png

Шаг 2. Выбираем метод разделения
Мы будем использовать регулярные выражения.

wa6wikq5rmdv7ierllecwhaelik.png

Шаг 3. Выделяем значения, которые будут относиться к одному полю и называем его.

h7iozfsrf4r8le-ifd_ia5ogwxi.png

Шаг 4. Проверяем правильно ли в других событиях выделилось поле, если нет, то добавляем это событие в выбранные поля.

rpuqiweinb9j4jnyyuwjdcxsarg.png

Шаг 5. Выбираем поле во всех различных по структуре событиях.

dzzz1njwzoi51jif0f-ntzqczia.png

Шаг 6. Проверяем не выделилось ли что-то лишнее, если, например, в событии нет такого поля.

x1qqcq-n6jqbd-5zcxkbqrzkibq.png

Затем сохраняем поле и теперь при загрузке данных с таким же sourcetype к ним будет применяться такое правило выделения значения поля.

Далее мы создаем все поля, которые нам необходимы. И теперь данные готовы для дальнейшего анализа.

lqarybkspswvt_kiumygxymmjs0.png

Заключение


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

Надеемся, что эта информация будет полезна для Вас.

Мы рады ответить на все ваши вопросы и комментарии по данной теме. Также, если вас интересует что-то конкретно в этой области, или в области анализа машинных данных в целом — мы готовы доработать существующие решения для вас, под вашу конкретную задачу. Для этого можете написать об этом в комментариях или просто отправить нам запрос через форму на нашем сайте.

Мы являемся официальным Premier Партнером Splunk.

eyyy9nzwq4rf9kolg17ihjq5bik.png

© Habrahabr.ru