Перейти к основному содержимому
Версия: 4.2

Job Scheduler API

Job

Job представляет список активных действий, которые работают с результатами поиска. Поиск осуществляется по расписанию, указанном при создании задачи. API позволяет получать информацию о задачах, добавлять, обновлять и удалять их.

Структура Job

НазваниеСинтаксисОписание
name<string>Название задачи.
title<string>Заголовок задачи.
description<string>Описание задачи.
throttle<object>Подавление задачи (Подробнее Throttle).
actions<array>Список активных действий. Каждое активное действие представляет собой object (Подробнее Actions API).
global_params<object>Глобальные параметры задачи в формате ключ - значение.
search<object>Параметры поиска, который осуществляется при выполнении задачи (Подробнее Search).
run_with_roles<array>Список ролей, которые могут выполнять задачу.
schedule<object>Расписание выполнении задачи (Подробнее Schedule).
enabled<bool>Состояние задачи (включена, выключена).
lock_duration_seconds<int>Интервал времени от выполняемого запроса до выполнения следующего.
jitter<float>Случайное смещение времени.
_permission<object>Права доступа задачи.

Throttle

НазваниеСинтаксисОписание
time<string>Время подавления.
fields<array>Список полей, по которым осуществляется подавление. В списке хранится названия полей в формате string.
Подавление

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

Schedule

НазваниеСинтаксисОписание
cron<object>Задача расписания через Cron.
interval<object>Задача расписания через интервальные значения.
предупреждение

Cron и Interval взаимоисключающие, то есть есть поле cron, то поле interval должно отсутствовать.

Cron

НазваниеСинтаксисОписание
expression<string>Cron-выражение.
timezone<string>Часовой пояс.

Interval

НазваниеСинтаксисОписание
start_time<string>Время, с которого начинается отсчет интервалов.
period<int>Длина интервала.
unit<string>Единица измерения. Например, MINUTES, HOURS, DAYS и т.д.
НазваниеСинтаксисОписание
query<string>Запрос.
timefield<string>Имя поля в котором хранится временная метка
earliest<string>Начальная временная метка поиска.
latest<string>Конечная временная метка поиска.

CRUD для Job

Получение списка всех задач

GET _core/job_scheduler/jobs/

Получение задачи по ID

GET _core/job_scheduler/jobs/{job_id}

Добавление новой задачи

POST _core/job_scheduler/job/
{
"title": "Тестирование Email c smtpConnection",
"description": "test description",
"throttle": {
"time": "5m",
"fields": []
},
"actions": [
{
"script": {
"context": "/app/opensearch/utils/python/bin/python3 /app/opensearch/utils/scripts/file_write_script.py",
"is_once": false,
"local_params": {}
}
}
],
"global_params": {
"key": "value"
},
"search": {
"sme": {
"query": "source internal_audit-* qsize=5;",
"time_field": "@timestamp",
"earliest": "now-24h",
"latest": "now"
}
},
"run_with_roles": [],
"name": "Testirovanie_Email_c_smtpConnection",
"schedule": {
"cron": {
"expression": "* * * * *",
"timezone": "Europe/Moscow"
}
},
"enabled": false,
"lock_duration_seconds": 30,
"_permissions": {
"owner": "admin",
"read": {
"roles": [],
"users": []
},
"write": {
"roles": [],
"users": []
}
}
}

Обновление задачи

PUT _core/job_scheduler/job/{job_id}
{
"title": "Тестирование Email c smtpConnection",
"throttle": {
"time": "5m",
"fields": []
},
"actions": [
{
"script": {
"context": "/app/opensearch/utils/python/bin/python3 /app/opensearch/utils/scripts/file_write_script.py",
"is_once": false,
"local_params": {}
}
}
],
"global_params": {},
"search": {
"sme": {
"query": "source internal_audit-* qsize=5;",
"time_field": "@timestamp",
"earliest": "now-24h",
"latest": "now"
}
},
"run_with_roles": [],
"name": "Testirovanie_Email_c_smtpConnection",
"schedule": {
"cron": {
"expression": "* * * * *",
"timezone": "Europe/Moscow"
}
},
"enabled": false,
"lock_duration_seconds": 30,
"_permissions": {
"owner": "admin",
"read": {
"roles": [],
"users": []
},
"write": {
"roles": [],
"users": []
}
}
}

Удаление задачи

DELETE _core/job_scheduler/jobs/{job_id}

Запись в БД

Настройки "Запись в БД" необходимы для создания соответствующего активного действия. Для создания "Запись в БД" необходимо предварительно иметь список пользователей JDBC и список соединений.

JDBC User

НазваниеСинтаксисОписание
name<string>Именование пользователя.
username<string>Имя пользователя в базе данных.
password_id<string>Ключ в keystore c префиксом jobscheduler.jdbc.password., по которому возможно получить пароль пользователя в базе данных.

Пример:

{
"name": "name",
"username": "username",
"password_id": "passwordId"
}

Connection

НазваниеСинтаксисОписание
name<string>Название базы данных.
driver<object>Драйвер базы данных (например, postgres, clickhouse).
host<string>Адрес хоста, на котором находится база данных (например, "localhost" или IP-адрес).
port<string>Номер порта, используемого для подключения к базе данных.
db<string>Имя базы данных, к которой осуществляется подключение.

Пример:

{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}

CRUD для JDBC User

Получение списка всех пользователей

GET _core/job_scheduler/jdbc_user/

Получение пользователя по ID

GET _core/job_scheduler/jdbc_user/{jdbc_user_id}

Добавление нового пользователя

POST _core/job_scheduler/jdbc_user/
{
"name": "name",
"username": "username",
"password_id": "passwordId"
}

Обновление пользователя


PUT _core/job_scheduler/jdbc_user/{jdbc_user_id}
{
"name": "name",
"username": "username",
"password_id": "passwordId"
}

Удаление пользователя

DELETE _core/job_scheduler/jdbc_user/{jdbc_user_id}

CRUD для Connection

Получение списка всех соединений

GET _core/job_scheduler/jdbc_connection/

Получение соединения по ID

GET _core/job_scheduler/jdbc_connection/{connection_id}

Добавление нового соединения

POST _core/job_scheduler/jdbc_connection
{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}

Обновление соединения


PUT _core/job_scheduler/jdbc_connection/{connection_id}
{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}

Удаление соединения

DELETE _core/job_scheduler/jdbc_connection/{connection_id}

Mail

Настройки Mail необходимы для создания соответствующего активного действия и возможностью создавать рассылку сразу группе получателей письма. Для этого необходимо сначала создать необходимое количество получателей, а потом из них создать группу. С помощью API пользователь может настроить получателей, группу получателей и SMTP.

предупреждение

В случае если в Mail Action не указан smtp_id, то настройки отправителя будут браться из индекса .sm_settings.

предупреждение

В случае если Mail Action не указан в параметр recipient_group_id, то получатель будет выступать пользователь, указанный в параметре to.

Recipient

НазваниеСинтаксисОписание
name<string>Имя получателя.
description<string>Описание получателя.
type<string>Тип адреса.
address<string>Адрес электронной почты получателя.

Пример:

{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}

Recipient Group

НазваниеСинтаксисОписание
name<string>Имя группы получателей.
description<string>Описание группы получателей.
recipient_ids<array>id получателей, которые записаны в индекс получателей.
recipient_emails<array>Список адресов получателей, которые не записаны в индекс получателей.

Пример:

{
"name": "name",
"description": "description",
"recipient_ids": ["id1", "id2"],
"recipient_emails": ["test@test.ru", "test2@test.ru"]
}

SMTP

SMTP имеет структуру:

НазваниеСинтаксисОписание
name<string>Имя SMTP сервера.
description<string>Описание SMTP сервера.
host<string>Адрес хоста SMTP сервера.
port<string>Порт, на котором работает SMTP сервер (например, 12345).
user<string>Имя пользователя для аутентификации на SMTP сервере.
user_email<string>Электронная почта пользователя, связанная с учетной записью SMTP сервера.
password_id<string>Ключ в keystore с префиксом jobscheduler.email.password., по которому возможно получить пароль пользователя.
timeout<int>Тайм-аут подключения к SMTP серверу в миллисекундах.
proto<string>Протокол, используемый для подключения к SMTP серверу (например, ssl).

Пример:

{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}

CRUD для Recipient

Получение списка всех получателей

GET _core/job_scheduler/recipients

Получение получателя по ID

GET _core/job_scheduler/recipients/{recipient_id}

Добавление нового получателя

POST _core/job_scheduler/recipients
{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}

Обновление получателя


PUT _core/job_scheduler/recipients/{recipient_id}
{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}

Удаление получателя

DELETE _core/job_scheduler/recipients/{recipient_id}

CRUD для Recipient Group

Получение списка всех групп получателей

GET _core/job_scheduler/recipient_groups

Получение группы получателей по ID

GET _core/job_scheduler/recipient_groups/{recipient_group_id}

Добавление новой группы получателей

POST _core/job_scheduler/recipient_groups
{
"name": "name",
"description": "description",
"recipient_ids": [
"id1",
"id2"
],
"recipient_emails": [
"test@test.ru",
"test2@test.ru"
]
}

Обновление группы получателей


PUT _core/job_scheduler/recipient_groups
{
"name": "name",
"description": "description",
"recipient_ids": [
"id1",
"id2"
],
"recipient_emails": [
"test@test.ru",
"test2@test.ru"
]
}

Удаление группы получателей

DELETE _core/job_scheduler/recipient_groups/{recipient_group_id}

CRUD для SMTP

Получение списка всех SMTP

GET _core/job_scheduler/smtp

Получение SMTP по ID

GET _core/job_scheduler/smtp/{smtp_id}

Добавление нового SMTP

POST _core/job_scheduler/smtp
{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}

Обновление SMTP


PUT _core/job_scheduler/smtp/{smtp_id}
{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}

Удаление SMTP

DELETE _core/job_scheduler/smtp/{smtp_id}