dvolodin Опубликовано 12 марта, 2009 · Жалоба снуля переделал базу, заново завел тестовый объект, нажал на ссылку scripts и попытался сделать get_config, получил: ProtocolError at /sa/2/scripts/Cisco.IOS.get_config/ <ProtocolError for 127.0.0.1:19702/RPC2: -1 > Request Method: GET Request URL: http://127.0.0.1:8000/sa/2/scripts/Cisco.IOS.get_config/ Exception Type: ProtocolError Exception Value: <ProtocolError for 127.0.0.1:19702/RPC2: -1 > Exception Location: /usr/lib/python2.5/xmlrpclib.py in request, line 1191 Python Executable: /usr/bin/python Python Version: 2.5.4 ниче не понимаю, вижу что обламывается на RPC, но как вычислить чего ему не хватает.... Значит будет лишний повод причесать эту часть с XML-RPC, уже назрело. Она используется только для того, чтобы оператор мог выполнить действие из web-интерфейса и для интеграции со сторонними системами. Архивирование конфигов происходит автоматически при включенной периодической задаче cm.pull_config. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 12 марта, 2009 · Жалоба вот такое оно мне выдает в логи при попытках вытаскивания конфига с кошки: 2009-03-12 18:07:25,994 INFO Executing cm.config_pull 2009-03-12 18:07:26,008 INFO script Cisco.IOS.get_config(7206-test) 2009-03-12 18:07:26,030 ERROR UNHANDLED EXCEPTION (2009-03-12 18:07:26.010327) Working directory: /var/www/noc <type 'exceptions.TypeError'> 22 has type <type 'int'>, but expected one of: (<type 'str'>, <type 'unicode'>) START OF TRACEBACK ------------------------------------------------------------------------ File: ./scripts/../../noc/sa/sae.py (Line: 385) Function: periodic_wrapper 378 self.periodic_task_lock.release() 379 t.start() 380 381 def periodic_wrapper(self,task): 382 logging.info(u"Executing %s"%unicode(task)) 383 cwd=os.getcwd() 384 try: 385 ==> status=task.periodic_class(self).execute() 386 except: 387 error_report() 388 status=False 389 logging.info(u"Task %s is terminated with '%s'"%(unicode(task),status)) 390 if status: 391 timeout=task.run_every Variables: self = <noc.sa.sae.SAE object at 0xb7d9efcc> task = <TaskSchedule: cm.config_pull> cwd = '/var/www/noc' ------------------------------------------------------------------------ File: /var/www/noc/../noc/cm/periodics/config_pull.py (Line: 20) Function: execute 13 name="cm.config_pull" 14 description="" 15 16 def execute(self): 17 from noc.cm.models import Config 18 for o in Config.objects.filter((Q(next_pull__lt=datetime.datetime.now())|Q(next_pull__isn ull=True))&Q(pull_every__isnull=False)).order_by("next_pull"): 19 logging.debug("Pulling %s",str(o)) 20 ==> o.pull(self.sae) 21 return True 22 Variables: self = <noc.cm.periodics.config_pull.Task object at 0x9a1cccc> Config = <class 'noc.cm.models.Config'> o = <Config: config/cisco> ------------------------------------------------------------------------ File: /var/www/noc/../noc/cm/models.py (Line: 223) Function: pull 216 self.next_pull=datetime.datetime.now()+datetime.timedelta(seconds=timeout) 217 self.save() 218 return 219 if self.pull_every: 220 self.next_pull=datetime.datetime.now()+datetime.timedelta(seconds=self.pull_ever y) 221 self.save() 222 self.write(result) 223 ==> sae.script(self.managed_object,"%s.get_config"%self.managed_object.profile_name,pull_callback) 224 def scripts_link(self): 225 return "<A HREF='/sa/%d/scripts/'>Scripts</A>"%(self.id) 226 scripts_link.short_description="Scripts" 227 scripts_link.allow_tags=True 228 ## 229 ## Access control Variables: self = <Config: config/cisco> pull_callback = <function pull_callback at 0x9a15c6c> sae = <noc.sa.sae.SAE object at 0xb7d9efcc> ------------------------------------------------------------------------ File: ./scripts/../../noc/sa/sae.py (Line: 443) Function: script 436 return 437 r=ScriptRequest() 438 r.script=name 439 r.access_profile.profile = object.profile_name 440 r.access_profile.scheme = object.scheme 441 r.access_profile.address = object.address 442 if object.port: 443 ==> r.access_profile.port = object.port 444 if object.user: 445 r.access_profile.user = object.user 446 if object.password: 447 r.access_profile.password = object.password 448 if object.super_password: 449 r.access_profile.super_password= object.super_password Variables: name = u'Cisco.IOS.get_config' stream = <noc.sa.sae.SAESocket object at 0x9a0aa4c> script_callback = <function script_callback at 0x9a15d4c> object = <ManagedObject: 7206-test> callback = <function pull_callback at 0x9a15c6c> r = <noc.sa.protocols.sae_pb2.ScriptRequest object at 0x9a08c44> kwargs = {} self = <noc.sa.sae.SAE object at 0xb7d9efcc> ------------------------------------------------------------------------ File: /var/lib/python-support/python2.5/google/protobuf/reflection.py (Line: 397) Function: setter 390 type_checker = type_checkers.GetTypeChecker(field.cpp_type, field.type) 391 392 def getter(self): 393 return getattr(self, python_field_name) 394 getter.__module__ = None 395 getter.__doc__ = 'Getter for %s.' % proto_field_name 396 def setter(self, new_value): 397 ==> type_checker.CheckValue(new_value) 398 setattr(self, has_field_name, True) 399 self._MarkByteSizeDirty() 400 self._MaybeCallTransitionToNonemptyCallback() 401 setattr(self, python_field_name, new_value) 402 setter.__module__ = None 403 setter.__doc__ = 'Setter for %s.' % proto_field_name Variables: type_checker = <google.protobuf.internal.type_checkers.UnicodeValueChecker object at 0x965ce0c> new_value = 22 self = <noc.sa.protocols.sae_pb2.AccessProfile object at 0x9ac622c> python_field_name = '_value_port' has_field_name = '_has_port' ------------------------------------------------------------------------ File: /var/lib/python-support/python2.5/google/protobuf/internal/type_checkers.py (Line: 117) Function: CheckValue 110 111 """Checker used for string fields.""" 112 113 def CheckValue(self, proposed_value): 114 if not isinstance(proposed_value, (str, unicode)): 115 message = ('%.1024r has type %s, but expected one of: %s' % 116 (proposed_value, type(proposed_value), (str, unicode))) 117 ==> raise TypeError(message) 118 119 # If the value is of type 'str' make sure that it is in 7-bit ASCII 120 # encoding. 121 if isinstance(proposed_value, str): 122 try: 123 unicode(proposed_value, 'ascii') Variables: message = "22 has type <type 'int'>, but expected one of: (<type 'str'>, <type 'unicode'>)" proposed_value = 22 self = <google.protobuf.internal.type_checkers.UnicodeValueChecker object at 0x965ce0c> ------------------------------------------------------------------------ END OF TRACEBACK Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 14 марта, 2009 · Жалоба Для Managed Object'а заполнено поле Port? Что будет, если его оставить пустым? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 15 марта, 2009 · Жалоба Для Managed Object'а заполнено поле Port?Что будет, если его оставить пустым? все получилось, огромное спасибо за потраченное на меня время Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 15 марта, 2009 · Жалоба Для Managed Object'а заполнено поле Port?Что будет, если его оставить пустым? все получилось, огромное спасибо за потраченное на меня время Продолжаем вылавливать и фиксить архаичные баги :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 15 марта, 2009 (изменено) · Жалоба все получилось, огромное спасибо за потраченное на меня время Баг с сериализацией пофиксен. См. TT #130 Изменено 16 марта, 2009 пользователем dvolodin Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 16 марта, 2009 · Жалоба Вышел NOC 0.1.7. Среди изменений: Поддержка платформы f5 BIG-IP Поддежка Juniper SRX Встроенная документация Упрощенная процедура установки и обновления Возможность клонирования правил классификации событий Исправлен ряд ошибок, в том числе и те, которые упоминались в этой ветке См. Release Notes Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 16 марта, 2009 (изменено) · Жалоба вот еще - как грузить в неё MIBы? а то в комплекте с системой идет набор, а при попытке upload mib на любой ругается Failure: Failed to upload MIB, или это не с web-интерфейса делать надо? установлена последняя версия из репозитория Изменено 16 марта, 2009 пользователем White_Alex Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 16 марта, 2009 · Жалоба вот еще - как грузить в неё MIBы?а то в комплекте с системой идет набор, а при попытке upload mib на любой ругается Failure: Failed to upload MIB, или это не с web-интерфейса делать надо? установлена последняя версия из репозитория libsmi установлен? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 16 марта, 2009 · Жалоба libsmi установлен? да, все по мануалу сделано было Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 16 марта, 2009 · Жалоба libsmi установлен? да, все по мануалу сделано было Можно загрузить из CLI: # su - noc $ cd /opt/noc $ python manage.py import-mib <path-to-mib> Если ругнется, то проблема связана либо с неправильными путями к smilint и smidump, либо с правами доступа к local/share/mibs, либо со старой версией libsmi Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 17 марта, 2009 · Жалоба # su - noc $ cd /opt/noc $ python manage.py import-mib <path-to-mib> Если ругнется, то проблема связана либо с неправильными путями к smilint и smidump, либо с правами доступа к local/share/mibs, либо со старой версией libsmi спасибо, вот так все получилось (просто неправильно последовательность загрузки соблюдал) а нет примерно такой же возможности пачками однотипные хосты добавлять в базу прямо с командной строки? (понятно, что голым sql запросом можно, но хочется красиво:-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 17 марта, 2009 · Жалоба # su - noc $ cd /opt/noc $ python manage.py import-mib <path-to-mib> Если ругнется, то проблема связана либо с неправильными путями к smilint и smidump, либо с правами доступа к local/share/mibs, либо со старой версией libsmi спасибо, вот так все получилось (просто неправильно последовательность загрузки соблюдал) Из web-интерфейса тоже должно заливаться. Чтобы залить MIB надо, чтобы были залиты все MIB'ы, которые он импортрует. В web-интерфейсе пишется, каких MIB'ов емуне хватает для полного счастья. Учитывая, что компиляция всего вороха MIB-ов - весьма нудная операция, MIB'ы, необходимые для встроенных правил классификации событий идут с системой и компилируются автоматически. а нет примерно такой же возможности пачками однотипные хосты добавлять в базу прямо с командной строки? (понятно, что голым sql запросом можно, но хочется красиво:-)Обычно добавляли SQL-запросами. Все равно по железкам придется пройтись, пробить хотя бы syslog и trap'ы на активатор.В принципе, можно сделать и заливку из CSV, как и для IP-адресов, дел минут на 15 всего :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 17 марта, 2009 · Жалоба а нет примерно такой же возможности пачками однотипные хосты добавлять в базу прямо с командной строки? (понятно, что голым sql запросом можно, но хочется красиво:-)Теперь можно. Service Activation >> Managed Objects. В правом верхнем углу - кнопка "Tools", там инструкция есть.Первая строка CSV - названия полей, остальные - сами объекты. См. r945 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 18 марта, 2009 · Жалоба еще вопрос - есть ли внятная дока, как с syslog и snmp trap eventами работать? а то собирать-то оно собирает и даже говорит, что classifier отрабатывает, но чего потом с ними делать - мне например из интерфейса непонятно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 марта, 2009 · Жалоба еще вопрос - есть ли внятная дока, как с syslog и snmp trap eventами работать? а то собирать-то оно собирает и даже говорит, что classifier отрабатывает, но чего потом с ними делать - мне например из интерфейса непонятноНадо накатить последние апдейты, там в одном месте шаблон был поломан.А дальше в меню Fault Management пункт Events. События можно переклассифицировать, закрывать, искать по разным критериям. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 18 марта, 2009 · Жалоба обновился, post-update сделал, все с виду хорошо, однако открываю events и там пусто, хотя я так понимаю должно бы полный список выдавать, если фильтр не ставить, в отчете manage object summary например по каждому объекту показывает, что события в базе есть, что недокручено, чтобы еще и в events это видеть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 марта, 2009 · Жалоба обновился, post-update сделал, все с виду хорошо, однако открываю events и там пусто, хотя я так понимаю должно бы полный список выдавать, если фильтр не ставить, в отчете manage object summary например по каждому объекту показывает, что события в базе есть, что недокручено, чтобы еще и в events это видеть? # cd /opt/noc # hg tip что показывает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 18 марта, 2009 · Жалоба # cd /opt/noc # hg tip что показывает? abort: requirement 'fncache' not supported! - ругается типа Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 марта, 2009 · Жалоба # cd /opt/noc # hg tip что показывает? abort: requirement 'fncache' not supported! - ругается типа NOC поставлен из .tgz? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 марта, 2009 · Жалоба Вышел NOC 0.1.8. Cреди изменений: Возможность настройки web-интерфейса из файла конфигурации Загрузка Managed Objects из файлов CSV При выделении IP-адреса в форме автоматически проставляется первый свободный IP-адрес в блоке Исправлена ошибка в форме поиска событий FM, которая приводила к тому, что список событий не отображался Багфиксы, мелкие usability fixes, дополнения в документацию Подробнее: CHANGELOG Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 19 марта, 2009 (изменено) · Жалоба NOC поставлен из .tgz? нет, сделан hg clone и т.д. обновился с репозитория - вроде заработало отображение events попробовал загрузку объектов из cvs файла - не взлетело, говорит: AttributeError at /sa/tools/upload_managed_objects/ 'str' object has no attribute 'META' Request Method: POST Request URL: http://192.168.4.15:8000/sa/tools/upload_managed_objects/ Exception Type: AttributeError Exception Value: 'str' object has no attribute 'META' Exception Location: /var/lib/python-support/python2.5/django/core/context_processors.py in debug, line 34 дальше чет еще интереснее, видать счастливый я для этой программы: в Address Space Management создаю новый блок, привязываю его к новому VRF, иду в Assignment Address, жму педаль на вновь созданном VRF и получаю: DoesNotExist at /ip/5/ IPv4Block matching query does not exist. Request Method: GET Request URL: http://192.168.4.15:8000/ip/5/ Exception Type: DoesNotExist Exception Value: IPv4Block matching query does not exist. Exception Location: /var/lib/python-support/python2.5/django/db/models/query.py in get, line 309 не любит оно меня, хотя могет руки кривые:-))) Изменено 19 марта, 2009 пользователем White_Alex Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 20 марта, 2009 · Жалоба NOC поставлен из .tgz?попробовал загрузку объектов из cvs файла - не взлетело, говорит: AttributeError at /sa/tools/upload_managed_objects/ 'str' object has no attribute 'META' Request Method: POST Request URL: http://192.168.4.15:8000/sa/tools/upload_managed_objects/ Exception Type: AttributeError Exception Value: 'str' object has no attribute 'META' Exception Location: /var/lib/python-support/python2.5/django/core/context_processors.py in debug, line 34 Можно полный traceback? дальше чет еще интереснее, видать счастливый я для этой программы:в Address Space Management создаю новый блок, привязываю его к новому VRF, иду в Assignment Address, жму педаль на вновь созданном VRF и получаю: DoesNotExist at /ip/5/ IPv4Block matching query does not exist. Request Method: GET Request URL: http://192.168.4.15:8000/ip/5/ Exception Type: DoesNotExist Exception Value: IPv4Block matching query does not exist. Exception Location: /var/lib/python-support/python2.5/django/db/models/query.py in get, line 309 не любит оно меня, хотя могет руки кривые:-))) В новом VRF'е надо проверить, что в нем есть блок адресов 0.0.0.0/0 (Была такая особенность, надо поправить наконец-то :) ). Блоки адресов лучше выделять напрямую из Assigned Addresses. IPv4 Blocks - это администраторская форма, скорее для коррекции данных. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 21 марта, 2009 · Жалоба дальше чет еще интереснее, видать счастливый я для этой программы:в Address Space Management создаю новый блок, привязываю его к новому VRF, иду в Assignment Address, жму педаль на вновь созданном VRF и получаю: DoesNotExist at /ip/5/ IPv4Block matching query does not exist. Это пофиксили. См TT #41. Есть в последних апдейтах. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 23 марта, 2009 · Жалоба еще один момент - активатор выдает crash и UNHANDLED EXEPTION, если например устройство, с которого надо вытащить конфиг в данный момент по каким-либо причинам недоступно, нельзя это поправить? вроде как не повод просто падать, потому что железка просто выключена в данное время Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...