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 и т.д. |
Search
Название | Синтаксис | Описание |
---|---|---|
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}