понедельник, 30 мая 2016 г.

Splunk. Eval

Приветствую, уважаемый читатель!

Сегодня, я бы хотел поделиться с тобой знаниями об операторе преобразования значений - eval. По мере усложнения запросов на SPL, потребность в данном операторе сильно возрастает. Предназначен он для изменения значения в произвольном поле (field) в соответствии с условиями, которые мы установим. Описание работы и примеры ниже.




Итак, у нас есть источник событий, с помощью оператора eval мы может для каждого события (строки) отформатировать/отредактировать/распарсить значение любого поля и дать ему новое произвольное имя. Также, мы может просто добавить в результаты запроса поле с нужными нам значениями.

Оператор eval умеет выполнять математические, логические операции над значениями полей, а также подключать различные функции для манипуляций со значениями. Далее проиллюстрирую работу оператора на примерах Apache access.


Математические преобразования

sourcetype=Apache_access
| eval kbytes = bytes/1024
| table _time,clientip,bytes,kbytes




Использование условного оператора if. 
Общий синтаксис - if("условие", "если TRUE", "если False")

sourcetype=Apache_access
| eval new_field=if(status="200","OK","NO")
| table clientip,status,new_field





sourcetype=Apache_access
| eval proto=if(like(_raw, "%https%"), "https", "not_https")
| table clientip,_raw,uri,proto




Форматирование регистра текста 

sourcetype=Apache_access
| eval min = lower(useragent)
| eval max = upper(useragent)
| table clientip,useragent,min,max



Регулярные выражения

sourcetype=Apache_access
| eval is_ip=if(match(clientip, "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"), "IP", "not_ip")
| table clientip,is_ip




Считаю оператор eval одним из самых полезных, и настоятельно рекомендую изучить все его возможности. Помимо основной сферы применения, т.е. преобразования значений, он активно применяется при корреляции, когда необходимо связать 2 источника событий по одноименному ключевому полю. 


Прочитать поподробнее про данный оператор можно в документации -





Комментариев нет:

Отправить комментарий