Child pages
  • Высокопроизводительный SA
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Общие задачи

Описание проблемы 

Общие предположения

Требования

#ТребованияUser StoryВажностьПримечания
1

     

Общий дизайн

 Коллекция Scripts

Таблица sa_maptask заменяется на коллекцию noc.scripts в mongodb. Каждый скрипт, запланированный к выполнению, оформляется как отдельный документ.

Поля документа

ПолеТипОписание
idObjectIDID задачи
timestampDateTimeFieldВремя создания скрипта
expiresDateTimeFieldКрайний срок выполнения скрипта
statusStringField

Статус задачи. Значения:

  • N - new
  • F - failed
  • R - running
  • C - complete
result_codeIntFieldКод завершения скрипта
max_retries IntField Максимальное количество попыток
retries IntField Текущее количество попыток
objectForeignKeyField Ссылка на ManagedObject 
script StringField Название скрипта
access_profile EmbeddedDocumentField

Параметры доступа. Вложенный документ вида

ПолеТипОписание
addressStringFieldАдрес объекта
profileStringFieldПрофиль объекта
userStringFieldCLI user
passwordStringFieldCLI password
super_passwordStringFieldenable password
snmp_ro_communityStringFieldsnmp RO community
args DictField Входные параметры скрипта
activatorStringField  Название пула активаторов
instanceStringField Название instance активатора в пуле, который выполняет задачу
debug BooleanField True, если необходимо создать тушенку
capsDictFieldObject capabilities в формате Ключ -> значение

 

 

Переделка SAE

 

  • tornado
  • http basic auth
  • Сервис /register/ - дергается активатором для мониторинга
    • POST /register/
      • -> {"expires": seconds}
    • Получив ответ активатор должен повторно дернуть /register/ через seconds/2, в случае ошибки - через seconds/8
  • GET /task/ - дергается активатором, когда он готов выполнять новый скрипт
    • На выходе JSON
      • id
      • timeout
      • object
      • script
      • access profile
      • args
      • debug
    • В scripts проставляется status = R
  • POST /task/ - дергается активатором после завершения скрипта
    • На входе JSON
      • id
      • status - True | False
      • result
      • debug - beef, если был проставлен статус debug=true
  • POST /ping/ - дергается NOC-ping с изменениями статуса
    • На входе список
      • timestamp
      • object id
      • status

 

Переделка активатора

 

  • AutoConf daemon, получает в качестве конфига JSON
    • max_sessions
  • http client регистрации, крутится в отдельном потоке, реализует сервис /register/
  • threadpool - выполняет script runner
  • network -- поток с SocketFactory
  • dispatcher - отдельный поток, который по запросу script_runner'а запрашивает новые задачи и пересылает на SAE результат (через сервис /task/)

 

 

noc-ping

 

Задача пингования хостов перекладывается на отдельный демон noc-ping

 

  • AutoConf daemon, получает в качестве конфига хосты для пропинговки
  • SocketFactory с ping socket'ом, которые занимаются пропинговкой
  • sender - отсылает изменения статусов объектов на SAE

 

 

noc-collector

 

 

API

 

Для запуска скриптов используется существующий API

 

ManagedObject.scripts.<name>(params)

 

Вызов создает новую запись в коллекции scripts и через anypubsub? ждет подтверждения завершения задачи

 

 

 

  • ReduceTask.create_task - переделывается как обвязка для .scripts.

 


 

Удаляемые зависимости

 

  • protocol buffers

 


 

Открытые вопросы

Отрытые вопросы, не решенные проблемы:

ВопросВарианты решения

Related Issues

Отложенные задачи

ЗадачаПричина переносаПримечания
   

Translate to English

Свойства

Epic
TypeFEATURE
StatusDRAFT
Open Date2014-01-29
ModulesSA
Language

Russian

Owner
DesignerUnknown User (dv)
DevelopersUnknown User (dv)
QA
Close Date

Оглавление

История изменений

Version Published Changed By Comment
CURRENT (v. 2) 29.01.2015 08:27
v. 5 29.01.2015 06:42
v. 4 29.01.2015 06:33
v. 3 29.01.2015 06:29
v. 2 29.01.2015 05:54
v. 1 29.01.2015 05:49

  • No labels