SAYMON документация

Skip to end of metadata
Go to start of metadata

Данный функционал частично отсутствует в API и WebUI, можно сделать это прямыми запросами в MongoDB.

1. Создание класса

Данный пример позволит добавить новый класс объектов.

Заходим на сервер SAYMON и в терминале последовательно выполняем 2 команды:

$ mongo saymon
> db.classes.insert({"_id": 1001, "name" : "My_custom_class", "description" : "Тестовый класс"})
Поля классаОписание
"_id"id класса, для пользовательских классов необходимо использовать значение 1001 и больше
"name"имя класса
"description"описание класса, которое отображается рядом с именем в выпадающем списке при создании объекта

Для проверки:

  • открываем веб-интерфейс SAYMON;
  • нажимаем кнопку "Создать объект";
  • в выпадающем списке "Класс объекта" должен присутствовать класс "My_custom_class" с описанием "Тестовый класс".

2. Создание класса со свойствами по умолчанию

Данный пример позволит добавить новый класс для объектов, которые при создании будут иметь свойство "IP-адрес" со значением "192.168.1.1".

Заходим на сервер SAYMON и в терминале последовательно выполняем 2 команды:

$ mongo saymon
> db.classes.insert({ "_id" : 1001, "name" : "My_custom_class", "description" : "Тестовый класс", "properties": { "id": 1, "name": "IP-адрес", "type_id": 1, "value": "192.168.1.1" } })
Поля классаОписание
"_id"id класса, для пользовательских классов необходимо использовать значение 1001 и больше
"name"имя класса
"description"описание класса, которое отображается рядом с именем в выпадающем списке при создании объекта
Поля свойств объектов данного классаОписание
"id"id свойства

"name"

имя свойства

"type_id"

тип, определяющий данный json-документ как свойство объекта; в данном случае всегда должен быть равен 1
"value"значение свойства

Для проверки:

  • открываем веб-интерфейс SAYMON;
  • нажимаем кнопку "Создать объект";
  • в выпадающем списке "Класс объекта" выбираем "My_custom_class";
  • нажимаем кнопку "Создать";
  • переходим в созданный объект;
  • открываем секцию "Свойства";
  • в данной секции должно присутствовать свойство "IP-адрес" со значением "192.168.1.1".

3. Создание класса со свойствами и операциями по умолчанию

Данный пример позволит добавить новый класс для объектов, которые при создании будут иметь свойство "IP-адрес" со значением "192.168.1.1" и операцией, выполняющей ping адреса "192.168.1.1".

Заходим на сервер SAYMON и в терминале последовательно выполняем 2 команды:

$ mongo saymon
> db.classes.insert({ "_id" : 1001, "name" : "My_custom_class", "description" : "Тестовый класс", "properties": { "id": 1, "name": "IP-адрес", "type_id": 1, "value": "192.168.1.1" }, "operations" : [ { "name" : "Бесполезный пинг", "type" : 2, "parameters" : { "path" : "ping -c 4", "args" : [ "{{properties.IP-адрес}}" ] } } ] })
Поля классаОписание
"_id"id класса, для пользовательских классов необходимо использовать значение 1001 и больше
"name"имя класса
"description"описание класса, которое отображается рядом с именем в выпадающем списке при создании объекта
Поля свойств объектов данного классаОписание
"id"id свойства

"name"

имя свойства

"type_id"

тип, определяющий данный json-документ как свойство объекта; в данном случае всегда должен быть равен 1
"value"значение свойства
Поля операций объектов данного классаОписание

"name"

имя опрерации

"type"

тип, определяющий операцию; в данном случае всегда должен быть равен 1
"path"команда или полный путь до запускаемого скрипта; в данном случае выполняется команда ping
"args"аргументы, передаваемые выполняемой команде или скрипту; в данном случае передается значение, записанное у объекта в свойстве с названием "IP-адрес"

Для проверки:

  • открываем веб-интерфейс SAYMON;
  • нажимаем кнопку "Создать объект";
  • в выпадающем списке "Класс объекта" выбираем "My_custom_class";
  • нажимаем кнопку "Создать";
  • переходим в созданный объект;
  • открываем секцию "Свойства";
  • в данной секции должно присутствовать свойство "IP-адрес" со значением "192.168.1.1";
  • открываем секцию "Операции";
  • в данной секции должна присутствовать операция "Бесполезный пинг";
  • нажимаем кнопку операции;
  • операция выполняется и сервер SAYMON будет пинговать адрес 192.168.1.1.

Почему "Бесполезный пинг"?

Потому что stdout от этого пинга никуда не попадет - сервер просто пинганет указанный хост без каких-либо последствий (предположительно) :)

4. Добавление атрибутов классу

Данный пример позволит добавить новое свойство классу для объектов, которые при создании будут иметь дополнительное свойство "DNS" со значением "saymon.info".

Заходим на сервер SAYMON и в терминале последовательно выполняем 2 команды:

$ mongo saymon
> db.classes.update({"name":"My_custom_class"},{$push:{ "properties": { "id": 2, "name": "DNS", "type_id": 1, "value": "saymon.info" }})
Поля классаОписание
"name"имя класса
Поля свойств объектов данного классаОписание
"id"id свойства

"name"

имя свойства

"type_id"

тип, определяющий данный json-документ как свойство объекта; в данном случае всегда должен быть равен 1
"value"значение свойства

Для проверки:

  • открываем веб-интерфейс SAYMON;
  • нажимаем кнопку "Создать объект";
  • в выпадающем списке "Класс объекта" выбираем "My_custom_class";
  • нажимаем кнопку "Создать";
  • переходим в созданный объект;
  • открываем секцию "Свойства";
  • в данной секции должно присутствовать свойства "IP-адрес" со значением "192.168.1.1" и "DNS" со значением "saymon.info".

5. Удаление класса

Данный пример позволит удалить класс в случае неудачного эксперимента.

Заходим на сервер SAYMON и в терминале последовательно выполняем 2 команды:

  • для удаления по имени класса:
Удаление класса по имени
$ mongo saymon
> db.classes.remove({"name":"My_custom_class"})
  • для удаления по идентификатору класса:
Если идентификатор - numeric
$ mongo saymon
> db.classes.remove({"_id":1001})
Если идентификатор - string
$ mongo saymon
> db.classes.remove("_id": ObjectId("5b45ddc993ccaa6154333878"))
Поля классаОписание
"name"имя удаляемого класса
"_id"идентификатор удаляемого класса

Для проверки:

  • открываем веб-интерфейс SAYMON;
  • нажимаем кнопку "Создать объект";
  • в выпадающем списке "Класс объекта" не должен присутствовать класс "My_custom_class".