dvolodin Posted March 12, 2009 Posted March 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. Вставить ник Quote
White_Alex Posted March 12, 2009 Posted March 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 Вставить ник Quote
dvolodin Posted March 14, 2009 Posted March 14, 2009 Для Managed Object'а заполнено поле Port? Что будет, если его оставить пустым? Вставить ник Quote
White_Alex Posted March 15, 2009 Posted March 15, 2009 Для Managed Object'а заполнено поле Port?Что будет, если его оставить пустым? все получилось, огромное спасибо за потраченное на меня время Вставить ник Quote
dvolodin Posted March 15, 2009 Posted March 15, 2009 Для Managed Object'а заполнено поле Port?Что будет, если его оставить пустым? все получилось, огромное спасибо за потраченное на меня время Продолжаем вылавливать и фиксить архаичные баги :) Вставить ник Quote
dvolodin Posted March 15, 2009 Posted March 15, 2009 (edited) все получилось, огромное спасибо за потраченное на меня время Баг с сериализацией пофиксен. См. TT #130 Edited March 16, 2009 by dvolodin Вставить ник Quote
dvolodin Posted March 16, 2009 Posted March 16, 2009 Вышел NOC 0.1.7. Среди изменений: Поддержка платформы f5 BIG-IP Поддежка Juniper SRX Встроенная документация Упрощенная процедура установки и обновления Возможность клонирования правил классификации событий Исправлен ряд ошибок, в том числе и те, которые упоминались в этой ветке См. Release Notes Вставить ник Quote
White_Alex Posted March 16, 2009 Posted March 16, 2009 (edited) вот еще - как грузить в неё MIBы? а то в комплекте с системой идет набор, а при попытке upload mib на любой ругается Failure: Failed to upload MIB, или это не с web-интерфейса делать надо? установлена последняя версия из репозитория Edited March 16, 2009 by White_Alex Вставить ник Quote
dvolodin Posted March 16, 2009 Posted March 16, 2009 вот еще - как грузить в неё MIBы?а то в комплекте с системой идет набор, а при попытке upload mib на любой ругается Failure: Failed to upload MIB, или это не с web-интерфейса делать надо? установлена последняя версия из репозитория libsmi установлен? Вставить ник Quote
White_Alex Posted March 16, 2009 Posted March 16, 2009 libsmi установлен? да, все по мануалу сделано было Вставить ник Quote
dvolodin Posted March 16, 2009 Posted March 16, 2009 libsmi установлен? да, все по мануалу сделано было Можно загрузить из CLI: # su - noc $ cd /opt/noc $ python manage.py import-mib <path-to-mib> Если ругнется, то проблема связана либо с неправильными путями к smilint и smidump, либо с правами доступа к local/share/mibs, либо со старой версией libsmi Вставить ник Quote
White_Alex Posted March 17, 2009 Posted March 17, 2009 # su - noc $ cd /opt/noc $ python manage.py import-mib <path-to-mib> Если ругнется, то проблема связана либо с неправильными путями к smilint и smidump, либо с правами доступа к local/share/mibs, либо со старой версией libsmi спасибо, вот так все получилось (просто неправильно последовательность загрузки соблюдал) а нет примерно такой же возможности пачками однотипные хосты добавлять в базу прямо с командной строки? (понятно, что голым sql запросом можно, но хочется красиво:-) Вставить ник Quote
dvolodin Posted March 17, 2009 Posted March 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 всего :) Вставить ник Quote
dvolodin Posted March 17, 2009 Posted March 17, 2009 а нет примерно такой же возможности пачками однотипные хосты добавлять в базу прямо с командной строки? (понятно, что голым sql запросом можно, но хочется красиво:-)Теперь можно. Service Activation >> Managed Objects. В правом верхнем углу - кнопка "Tools", там инструкция есть.Первая строка CSV - названия полей, остальные - сами объекты. См. r945 Вставить ник Quote
White_Alex Posted March 18, 2009 Posted March 18, 2009 еще вопрос - есть ли внятная дока, как с syslog и snmp trap eventами работать? а то собирать-то оно собирает и даже говорит, что classifier отрабатывает, но чего потом с ними делать - мне например из интерфейса непонятно Вставить ник Quote
dvolodin Posted March 18, 2009 Posted March 18, 2009 еще вопрос - есть ли внятная дока, как с syslog и snmp trap eventами работать? а то собирать-то оно собирает и даже говорит, что classifier отрабатывает, но чего потом с ними делать - мне например из интерфейса непонятноНадо накатить последние апдейты, там в одном месте шаблон был поломан.А дальше в меню Fault Management пункт Events. События можно переклассифицировать, закрывать, искать по разным критериям. Вставить ник Quote
White_Alex Posted March 18, 2009 Posted March 18, 2009 обновился, post-update сделал, все с виду хорошо, однако открываю events и там пусто, хотя я так понимаю должно бы полный список выдавать, если фильтр не ставить, в отчете manage object summary например по каждому объекту показывает, что события в базе есть, что недокручено, чтобы еще и в events это видеть? Вставить ник Quote
dvolodin Posted March 18, 2009 Posted March 18, 2009 обновился, post-update сделал, все с виду хорошо, однако открываю events и там пусто, хотя я так понимаю должно бы полный список выдавать, если фильтр не ставить, в отчете manage object summary например по каждому объекту показывает, что события в базе есть, что недокручено, чтобы еще и в events это видеть? # cd /opt/noc # hg tip что показывает? Вставить ник Quote
White_Alex Posted March 18, 2009 Posted March 18, 2009 # cd /opt/noc # hg tip что показывает? abort: requirement 'fncache' not supported! - ругается типа Вставить ник Quote
dvolodin Posted March 18, 2009 Posted March 18, 2009 # cd /opt/noc # hg tip что показывает? abort: requirement 'fncache' not supported! - ругается типа NOC поставлен из .tgz? Вставить ник Quote
dvolodin Posted March 18, 2009 Posted March 18, 2009 Вышел NOC 0.1.8. Cреди изменений: Возможность настройки web-интерфейса из файла конфигурации Загрузка Managed Objects из файлов CSV При выделении IP-адреса в форме автоматически проставляется первый свободный IP-адрес в блоке Исправлена ошибка в форме поиска событий FM, которая приводила к тому, что список событий не отображался Багфиксы, мелкие usability fixes, дополнения в документацию Подробнее: CHANGELOG Вставить ник Quote
White_Alex Posted March 19, 2009 Posted March 19, 2009 (edited) 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 не любит оно меня, хотя могет руки кривые:-))) Edited March 19, 2009 by White_Alex Вставить ник Quote
dvolodin Posted March 20, 2009 Posted March 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 - это администраторская форма, скорее для коррекции данных. Вставить ник Quote
dvolodin Posted March 21, 2009 Posted March 21, 2009 дальше чет еще интереснее, видать счастливый я для этой программы:в Address Space Management создаю новый блок, привязываю его к новому VRF, иду в Assignment Address, жму педаль на вновь созданном VRF и получаю: DoesNotExist at /ip/5/ IPv4Block matching query does not exist. Это пофиксили. См TT #41. Есть в последних апдейтах. Вставить ник Quote
White_Alex Posted March 23, 2009 Posted March 23, 2009 еще один момент - активатор выдает crash и UNHANDLED EXEPTION, если например устройство, с которого надо вытащить конфиг в данный момент по каким-либо причинам недоступно, нельзя это поправить? вроде как не повод просто падать, потому что железка просто выключена в данное время Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.