Функции событий и активных списков
В данной статье при описании функций приняты следующие обозначения:
|
Функции секретов
get_secret
Возвращает значение заданного секрета из события.
Спецификация функции
get_secret(key: <строка>) :: <строка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
key |
строка |
Имя секрета. |
да |
Примеры
Получить ключ API Datadog из метаданных события.
get_secret("datadog_api_key")
secret value
remove_secret
Удаляет секрет из события.
Спецификация функции
remove_secret(ключ: <строка>) :: <пустое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
ключ |
строка |
Имя секрета для удаления. |
да |
Примеры
Удаление ключа API Datadog из события.
remove_secret("datadog_api_key")
null
set_secret
Устанавливает указанный секрет в событие.
Спецификация функции
set_secret(ключ: <строка>, секрет: <строка>) :: <пустое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
ключ |
строка |
Имя секрета. |
да |
|
секрет |
строка |
Значение секрета. |
да |
Примеры
Установка значения ключа API Datadog.
set_secret("datadog_api_key", "abc122")
null
set_semantic_meaning
Устанавливает семантический смысл для события. Обратите внимание, что эта функция задает значение при запуске Vector и не имеет поведения во время выполнения. Рекомендуется размещать все вызовы этой функции в начале функции VRL. Функцию нельзя вызывать с условием (например, нельзя предотвратить присваивание значения с использованием оператора if).
Спецификация функции
set_semantic_meaning(цель: <путь>, смысл: <строка>) :: <пустое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
цель |
путь |
Путь к значению, которому будет назначено семантическое значение. |
да |
|
смысл |
строка |
Имя назначаемого значения. |
да |
Примеры
Присваивание полю пользовательского семантического смысла
set_semantic_meaning(.foo, "bar")
null
Функции таблиц обогащения
find_enrichment_table_records
Поиск строк в таблице обогащения, соответствующих предоставленному условию.
Для файловых таблиц обогащения это условие должно быть объектом VRL, в котором ключи и значения указывают на поле для поиска и значение для поиска в этом поле. Эта функция возвращает строки, соответствующие предоставленным условиям. Все поля должны совпадать, чтобы строки были возвращены; если хотя бы одно поле не совпадает, строки не возвращаются.
В настоящее время существует две формы критериев поиска:
-
Поиск точного совпадения. Заданное поле должно точно совпадать со значением. Чувствительность к регистру может быть указана с помощью аргумента
case_sensitive
. Точный поиск может использовать индекс прямо в наборе данных, что делает его менее ресурсозатратным с точки зрения производительности. -
Поиск по диапазону дат. Заданное поле должно быть больше или равно дате
from
и меньше или равно датеto
. Обратите внимание, что поиск по диапазону дат включает последовательное сканирование строк, которые были найдены с помощью любых точных критериев. Такая операция может оказаться ресурсозатратной, если много строк возвращается любыми точными критериями. Рекомендуется использовать диапазоны дат как единственные критерии, когда набор данных обогащения очень мал.
Для таблиц обогащения geoip
это условие должно быть объектом VRL с одной парой ключ-значение, значение которой должно быть действительным IP-адресом. Пример: {"ip": .ip }
. Если ожидается поле с результатом без значения, будет использовано null
. Эта таблица может возвращать следующие поля:
find_enrichment_table_records(таблица: <строка>, условие: <объект>, [select: <массив>, case_sensitive: <логическое значение>]) :: <массив>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
таблица |
строка |
Таблица обогащения для поиска. |
да |
|
условие |
объект |
Условие для поиска. Поскольку условие используется при загрузке для создания индексов в данных, они должны быть статически определены. |
да |
|
select |
массив |
Подмножество полей из таблицы обогащения, которые нужно вернуть. Если не указано, будут возвращены все поля. |
нет |
|
case_sensitive |
логическое значение |
Определяет, нужно ли точное совпадение текстовых полей. |
|
нет |
Примеры
Точное совпадение
find_enrichment_table_records!("test", { "surname": "smith", }, case_sensitive: false)
[ { "id": 1, "firstname": "Bob", "surname": "Smith" }, { "id": 2, "firstname": "Fred", "surname": "Smith" } ]
Поиск по диапазону дат
find_enrichment_table_records!("test", { "surname": "Smith", "date_of_birth": { "from": t'1985-01-01T00:00:00Z', "to": t'1985-12-31T00:00:00Z' } })
[ { "id": 1, "firstname": "Bob", "surname": "Smith" }, { "id": 2, "firstname": "Fred", "surname": "Smith" } ]
get_enrichment_table_record
Функция ищет строку в таблице обогащения, которая соответствует указанному условию. Должна быть найдена одна строка. Если строка не найдена или найдено более одной строки, возвращается ошибка.
Для таблиц обогащения типа file
это условие должно быть объектом VRL, в котором пары ключ-значение указывают поле для поиска, сопоставленное с искомым значением в этом поле. Эта функция возвращает строки, которые соответствуют предоставленным условиям. Все поля должны совпадать, чтобы строки были возвращены; если какие-либо поля не совпадают, строки не возвращаются.
На данный момент существует две формы критериев поиска:
-
Поиск точного совпадения. Указанное поле должно точно совпадать со значением. Регистрозависимость можно указать с помощью аргумента
case_sensitive
. Поиск точного совпадения может использовать индекс напрямую в наборе данных, что должно сделать этот поиск менее ресурсозатратным с точки зрения производительности. -
Поиск по диапазону дат. Указанное поле должно быть больше или равно дате
from
и меньше или равно датеto
. Обратите внимание, что поиск по диапазону даты включает последовательное сканирование строк, которые были найдены с помощью любых точных критериев. Такая операция может оказаться дорогостоящей, если много строк возвращается с помощью точных критериев. Рекомендуется использовать диапазоны дат как единственные критерии, когда объем данных для обогащения очень мал.
Для таблиц обогащения geoip
это условие должно быть объектом VRL с одной парой ключ-значение, значение которой должно быть допустимым IP-адресом. Пример: {"ip": .ip }
. Если ожидается возвращаемое поле и оно не имеет значения, будет использовано значение null
. Эта таблица может возвращать следующие поля:
-
Базы данных ISP:
-
autonomous_system_number
-
autonomous_system_organization
-
isp
-
organization
-
-
Базы данных City:
-
city_name
-
continent_code
-
country_code
-
country_name
-
region_code
-
region_name
-
metro_code
-
latitude
-
longitude
-
postal_code
-
timezone
-
-
Базы данных Connection-Type:
-
connection_type
-
Спецификация функции
get_enrichment_table_record(table: <строка>, condition: <объект>, [select: <массив>, case_sensitive: <логическое значение>]) :: <объект>, <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
table |
строка |
Таблица обогащения для поиска. |
да |
|
condition |
объект |
Условие для поиска. Поскольку условие используется при запуске для создания индексов в данных, эти условия должны быть статически определены. |
да |
|
select |
массив |
Подмножество полей из таблицы обогащения для возврата. Если не указано, будут возвращены все поля. |
нет |
|
case_sensitive |
логическое значение |
Должны ли текстовые поля соответствовать регистру точно. |
|
нет |
Ошибки
Функция get_enrichment_table_record
возвращает ошибки, для которых требуется обработка:
-
Строка не найдена
-
Найдено несколько строк, соответствующих условию
Примеры
Точное совпадение
get_enrichment_table_record!("test", { "surname": "bob", "firstname": "John" }, case_sensitive: false)
{ "id": 1, "firstname": "Bob", "surname": "Smith" }
Поиск по диапазону даты
get_enrichment_table_record!("test", { "surname": "Smith", "date_of_birth": { "from": t'1985-01-01T00:00:00Z', "to": t'1985-12-31T00:00:00Z' } })
{ "id": 1, "firstname": "Bob", "surname": "Smith" }
Функции активных списков
add_active_record
Добавляет запись в активный список. Если запись с таким ключом уже существует, значение обновляется. В противном случае создается новая запись.
Спецификация функции
add_active_record(list, key, value) :: <логическое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
list |
строка |
название активного списка, в который добавляется запись |
да |
|
key |
объект |
уникальный ключ для записи |
да |
|
value |
любой тип |
значение, ассоциированное с ключом |
да |
Примеры
Добавление записи в активный список
add_active_record("suspicious_ips", .source_ip, true)
true
Обновление записи в активном списке
add_active_record("auth_failure_counts", .user_id, failure_count + 1)
true
get_active_record
Извлекает значение из активного списка по указанному ключу. Возвращает значение, ассоциированное с ключом, или null
, если запись отсутствует.
Спецификация функции
get_active_record(list, key) :: <любое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
list |
строка |
активный список, из которого нужно извлечь запись |
да |
|
key |
объект |
уникальный ключ записи |
да |
Примеры
Получение записи из активного списка
get_active_record("allowed_ips", .source_ip)
true
remove_active_record
Удаляет запись из активного списка. Если запись с таким ключом отсутствует, ничего не происходит.
Спецификация функции
remove_active_record(list, key) :: <логическое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
list |
строка |
активный список, из которого необходимо удалить запись |
да |
|
key |
объект |
уникальный ключ записи, которую необходимо удалить |
да |
Примеры
Удаление записи из активного списка
remove_active_record("auth_failure_counts", .user_id)
true