Skip to main content

Лайфхаки для шаблонов

В KUMA во многих местах можно использовать шаблоны для обогащения. Но мало кто знает, что в template можно использовать не только значения полей, например, {{.DeviceAddress}}, но и другой функционал шаблонов GO (ссылка).

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


Простое обогащение

Обогащать события можно не только классическими полями, например, {{.DeviceAddress}}, но и полями Extra, а также переменными.

Шаблон с обычными полем:

{{.DeviceAddress}}

Шаблон с Extra полем:

{{index .Extra "myField"}}

Шаблон с переменными (в функциях переменных):

template('Значения локальных переменных {{index . 0}} и {{index . 1}} а также {{index . 2}}', $var1, $var2, $var10)

Обогащение с условиями

Чтобы в message вставить текст "Пользователь user1 на хосте user1-pc.local (10.10.10.10) выполнил команду 'whoami'", а hostname и address не всегда могут быть указаны, но хочется красивую надпись без пустых скобок или лишних пробелов, то можно использовать условия:

Пользователь {{.DestinationNtDomain}}\{{.DestinationUserName}} на хосте {{if and .DeviceAddress .DeviceHostName}} {{.DeviceHostName}} ({{.DeviceAddress}}) {{else if .DeviceAddress}} {{.DeviceAddress}} {{ else }} {{.DeviceHostName}} {{ end }} выполнил команду "{{.DeviceCustomString4}}"

Такой же шаблон можно создать и с Extra-полями. Например, в поле события DeviceProcessName нужно записать значение из Extra-поля myField1, а в случае его отсутствия - myField2:

{{if index .Extra "myField1"}}{{index .Extra "myField1"}}{{else}}{{index .Extra "myField2"}}{{end}}

Еще пример:

{{if eq .DeviceCustomString1 "" }}{{""}}{{else}}{{"vlan"}}{{end}}

Также пример с использованием логических операторов and и or:

{{if and (eq .DeviceEventCategory "Application") ((or (eq .DeviceCustomString4 "MSSQL") (eq .DeviceCustomString4 "SQLISPackage")))}}{{.DestinationUserName}}{{end}}

Еще пример:

{{if and ((eq .DeviceCustomIPv6Address2 "") (not (eq .SourceAddress ""))) }}{{.SourceAddress}}{{else}}{{.DeviceCustomIPv6Address2}}{{end}}

Полезные ссылки

Другие варианты работы с шаблонами GO в KUMA: