dvolodin Posted March 23, 2009 Posted March 23, 2009 (edited) еще один момент - активатор выдает crash и UNHANDLED EXEPTION, если например устройство, с которого надо вытащить конфиг в данный момент по каким-либо причинам недоступно, нельзя это поправить? вроде как не повод просто падать, потому что железка просто выключена в данное времяЭто известная проблема (TT #118, TT #135), Solaris и Linux себя немного по-разному ведут. Сейчас дорабатывается. Активатор просто не будет пытаться ходить к недоступным железкам. Изменения, скорее всего, войдут в следующий релиз. Traceback не означает, что что-то упало. Каждый запрос от SAE к кативатору - это отдельная транзакция. Unhandled Exception в транзакции вызывает только прекращение транзации и не сказывается на выполнении других запросов. NOC, кстати, аккуратно собирает traceback'и со всех компонентов системы и оформляет их в виде проблем в Fault Management'е. Edited March 23, 2009 by dvolodin Вставить ник Quote
dvolodin Posted March 23, 2009 Posted March 23, 2009 В принципе, этот фикс должен помочь. Вставить ник Quote
3gvanek Posted March 25, 2009 Posted March 25, 2009 Добрый день, Господа! Сразу скажу - nocproject - вещь сильная и полезная. Все завелось с полтычка. Но. Я нигде не нашёл документации, каким образом настраивается mercurial репозиторий для nocproject. Судя по cm/vcs/hg.py вебморда должна сама инициализировать репозиторий, но почему то не хочет... Максимум что я добился при работе cm.config_pull - в директории /var/repo создаются файлы с конфигами и именами типа XXXXXX.tmp. Репозиторий инициализировал руками hg init и в hgrc [paths] default = /var/repo Задача моя простая - бекапить конфиги с 200 зайкселей 3124-4F, пары каталистов и пары цисок. Всё делал по мануалу, nocproject поставлен из mercurial. OS FreeBSD 7.1 P.S. Ненавижу питон и в нем не разбираюсь. Так что Help me please =) Вставить ник Quote
dvolodin Posted March 25, 2009 Posted March 25, 2009 Но. Я нигде не нашёл документации, каким образом настраивается mercurial репозиторий для nocproject.Судя по cm/vcs/hg.py вебморда должна сама инициализировать репозиторий, но почему то не хочет... Максимум что я добился при работе cm.config_pull - в директории /var/repo создаются файлы с конфигами и именами типа XXXXXX.tmp. Репозиторий инициализировал руками hg init и в hgrc [paths] default = /var/repo в etc/noc.conf надо прописать: [cm] repo = /var/repo vcs_type = hg vcs_path = <путь к hg> Каталог под репозиторий делается автоматически при инсталляции скриптом ./scripts/post-install Вставить ник Quote
3gvanek Posted March 25, 2009 Posted March 25, 2009 Уважаемый Дмитрий! Я же писал, что ставил по мануалу. Конфиг я конечно поправил. Вопрос в том, каким образом создается репозиторий? Потому что, например, скрипт post-install не создает директорию /var/repo/config, которая необходима в моем случае с конфигами... Насколько я понимаю это cm/vcs/hg.py должен инициализировать репозиторий в директории /var/repo, но у меня этот функционал не заработал. Возможно я чего то не сделал или сделал не так, ведь в доке это нигде не описано. Меня смущают файлы *.tmp в корне репозитория. Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 Уважаемый Дмитрий! Я же писал, что ставил по мануалу. Конфиг я конечно поправил. Вопрос в том, каким образом создается репозиторий? Потому что, например, скрипт post-install не создает директорию /var/repo/config, которая необходима в моем случае с конфигами... Насколько я понимаю это cm/vcs/hg.py должен инициализировать репозиторий в директории /var/repo, но у меня этот функционал не заработал. Возможно я чего то не сделал или сделал не так, ведь в доке это нигде не описано. Меня смущают файлы *.tmp в корне репозитория. В этих файлах конфиги или просто мусор? Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 Я же писал, что ставил по мануалу. Конфиг я конечно поправил. Вопрос в том, каким образом создается репозиторий? Потому что, например, скрипт post-install не создает директорию /var/repo/config, которая необходима в моем случае с конфигами... Насколько я понимаю это cm/vcs/hg.py должен инициализировать репозиторий в директории /var/repo, но у меня этот функционал не заработал. Возможно я чего то не сделал или сделал не так, ведь в доке это нигде не описано. Меня смущают файлы *.tmp в корне репозитория.Каталоги в /var/repo создаются автоматически при попытке записать туда файл (функция safe_rewrite в lib/fileutils.py). С правами все в порядке? ls -d /var/repo ls -la /var/repo что показывает? Вставить ник Quote
3gvanek Posted March 26, 2009 Posted March 26, 2009 С правами все впорядке, в файлах *.tmp конфиги. %ls -d /var/repo/ /var/repo/ %ls -la /var/repo/ total 26 drwxrwxrwx 3 noc noc 512 Mar 26 10:04 . drwxr-xr-x 29 root wheel 512 Mar 24 18:08 .. -rw------- 1 noc noc 8239 Mar 26 10:04 HxJbfg.tmp drwxr-xr-x 2 noc noc 512 Mar 26 10:01 config -rw------- 1 noc noc 8239 Mar 26 10:03 vdwmoP.tmp Директорию config я создал сам, без нее файлы *.tmp не складываются. Вставить ник Quote
mikevlz Posted March 26, 2009 Posted March 26, 2009 (edited) Ну, кто как, а мы пытаемся только установить... FreeBSD7.1 Release Ставим из репозитория. Доходим до заполнения базы sh ./scripts/post-update валятся два трейсбека: Traceback (most recent call last): File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/cmdli ne.py", line 172, in main app.build(all_files, filenames) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/appli cation.py", line 129, in build self.builder.build_update() File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 255, in build_update 'out of date' % len(to_build)) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 310, in build self.write(docnames, list(updated_docnames), method) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 349, in write self.write_doc(docname, doctree) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/html.py", line 351, in write_doc self.handle_page(docname, ctx, event_arg=doctree) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/html.py", line 648, in handle_page output = self.templates.render(templatename, ctx) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/jinja 2glue.py", line 81, in render return self.environment.get_template(template).render(context) s/basic/page.html", line 1, in top-level template code {% extends "layout.html" %} LEASE-i386.egg/jinja2/environment.py", line 499, in get_template template = self.loader.load(self, name, self.make_globals(globals)) LEASE-i386.egg/jinja2/loaders.py", line 107, in load code = environment.compile(source, name, filename) LEASE-i386.egg/jinja2/environment.py", line 410, in compile source = self.parse(source, name, filename) LEASE-i386.egg/jinja2/environment.py", line 357, in parse raise e TemplateSyntaxError: expected token 'lparen', got 'block_end' ", line 7 {%- macro relbar %} Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 340, in execute_manager utility.execute() File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 219, in execute output = self.handle(*args, **options) File "/opt/noc/fm/management/commands/sync-rules.py", line 28, in handle self.sync_mibs() File "/opt/noc/fm/management/commands/sync-rules.py", line 158, in sync_mibs MIB.load(os.path.join(prefix,m)) File "/opt/noc/fm/models.py", line 74, in load f=subprocess.Popen([config.get("path","smilint"),"-m",path],stderr=subprocess.PIPE,env={"SMIPATH":":".join(smipath)}).stderr File "/usr/local/lib/python2.5/subprocess.py", line 594, in __init__ errread, errwrite) File "/usr/local/lib/python2.5/subprocess.py", line 1097, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory mkdir -p ../../../../static/doc/en/ug//html ../../../../static/doc/en/ug//doctrees sphinx-build -b html -d ../../../../static/doc/en/ug//doctrees . ../../../../static/doc/en/ug//html Edited March 26, 2009 by mikevlz Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 Ну, кто как, а мы пытаемся только установить... FreeBSD7.1 ReleaseСтавим из репозитория. Доходим до заполнения базы sh ./scripts/post-update валятся два трейсбека: Да, такое я наблюдал уже. Причина в том, что Sphinx-0.6 не собирает нормально online документацию, Sphinx-0.5 -- собирает. В качестве временного workaround'а можно откатиться на Sphinx-0.5 или просто игнорировать traceback. Документация и правила FM накатываются раньше и на работу это влиять не должно. Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 Установку на FreeBSD 7 проверю на днях, как только додавлю инсталляцию на Linux'ах. Скоро выложу VMware image c установленным и настроенным NOC Вставить ник Quote
3gvanek Posted March 26, 2009 Posted March 26, 2009 Ну, кто как, а мы пытаемся только установить... FreeBSD7.1 ReleaseСтавим из репозитория. Доходим до заполнения базы sh ./scripts/post-update валятся два трейсбека: Traceback (most recent call last): File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/cmdli ne.py", line 172, in main app.build(all_files, filenames) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/appli cation.py", line 129, in build self.builder.build_update() File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 255, in build_update 'out of date' % len(to_build)) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 310, in build self.write(docnames, list(updated_docnames), method) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/__init__.py", line 349, in write self.write_doc(docname, doctree) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/html.py", line 351, in write_doc self.handle_page(docname, ctx, event_arg=doctree) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/build ers/html.py", line 648, in handle_page output = self.templates.render(templatename, ctx) File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6-py2.5.egg/sphinx/jinja 2glue.py", line 81, in render return self.environment.get_template(template).render(context) s/basic/page.html", line 1, in top-level template code {% extends "layout.html" %} LEASE-i386.egg/jinja2/environment.py", line 499, in get_template template = self.loader.load(self, name, self.make_globals(globals)) LEASE-i386.egg/jinja2/loaders.py", line 107, in load code = environment.compile(source, name, filename) LEASE-i386.egg/jinja2/environment.py", line 410, in compile source = self.parse(source, name, filename) LEASE-i386.egg/jinja2/environment.py", line 357, in parse raise e TemplateSyntaxError: expected token 'lparen', got 'block_end' ", line 7 {%- macro relbar %} И такие грабли бывают... =) В share/sphinx/templates/layout.html меняем в строке 7 relbar на relbar() и в строке 27 sidebar на sidebar() Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 И такие грабли бывают... =) В share/sphinx/templates/layout.html меняем в строке 7 relbar на relbar() и в строке 27 sidebar на sidebar()Уже нашел и пофиксил. TT #142. Есть еще одни более серьезные грабли. libsmi 0.4.7 работает нормально, 0.4.8 - крашится на некоторых mib'ах. Вставить ник Quote
mikevlz Posted March 26, 2009 Posted March 26, 2009 спасибо Остался такой трейсбек в том же самом месте Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 340, in execute_manager utility.execute() File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 219, in execute output = self.handle(*args, **options) File "/opt/noc/fm/management/commands/sync-rules.py", line 28, in handle self.sync_mibs() File "/opt/noc/fm/management/commands/sync-rules.py", line 158, in sync_mibs MIB.load(os.path.join(prefix,m)) File "/opt/noc/fm/models.py", line 74, in load f=subprocess.Popen([config.get("path","smilint"),"-m",path],stderr=subprocess.PIPE,env={"SMIPATH":":".join(smipath)}).stderr File "/usr/local/lib/python2.5/subprocess.py", line 594, in __init__ errread, errwrite) File "/usr/local/lib/python2.5/subprocess.py", line 1097, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory На завершение скрипта не влияет(предыдущие валились) Вставить ник Quote
dvolodin Posted March 26, 2009 Posted March 26, 2009 В etc/noc.conf пути к smilint и smidump правильно прописаны? спасибоОстался такой трейсбек в том же самом месте Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 340, in execute_manager utility.execute() File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 219, in execute output = self.handle(*args, **options) File "/opt/noc/fm/management/commands/sync-rules.py", line 28, in handle self.sync_mibs() File "/opt/noc/fm/management/commands/sync-rules.py", line 158, in sync_mibs MIB.load(os.path.join(prefix,m)) File "/opt/noc/fm/models.py", line 74, in load f=subprocess.Popen([config.get("path","smilint"),"-m",path],stderr=subprocess.PIPE,env={"SMIPATH":":".join(smipath)}).stderr File "/usr/local/lib/python2.5/subprocess.py", line 594, in __init__ errread, errwrite) File "/usr/local/lib/python2.5/subprocess.py", line 1097, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory На завершение скрипта не влияет(предыдущие валились) Вставить ник Quote
mikevlz Posted March 26, 2009 Posted March 26, 2009 (edited) сейчас смотрим на запуск служб python scripts/noc-sla.py start Traceback (most recent call last): File "scripts/noc-sla.py", line 16, in <module> sla=SLAMonitor() File "/opt/noc/pm/sla.py", line 26, in __init__ Daemon.__init__(self) File "/opt/noc/lib/daemon.py", line 45, in __init__ self.load_config() File "/opt/noc/lib/daemon.py", line 85, in load_config if self.config.get("main","logfile"): File "/usr/local/lib/python2.5/ConfigParser.py", line 511, in get raise NoSectionError(section) ConfigParser.NoSectionError: No section: 'main' Впечатление такое, что забыли положить noc-sla.conf Edited March 26, 2009 by mikevlz Вставить ник Quote
mikevlz Posted March 26, 2009 Posted March 26, 2009 да, и еще одно... За стенкой стоит Dlink DES3526, завел его как объект. Сказал, что конфиг у него управляется. В списке объектов в табличке можно щелкнуть Scripts, выбрать get_config. Конфиг оно мне покажет. По расписанию он должен сливаться в /var/repo/des3526.cfg раз в 5 минут. В /var/repo совсем пусто. В логах noc-sae: 2009-03-26 19:55:38,887 INFO Task cm.config_pull is terminated with 'True' 2009-03-26 19:55:43,243 ERROR UNHANDLED EXCEPTION (2009-03-26 19:55:43.230115) Working directory: /opt/noc <type 'exceptions.OSError'> [Errno 1] Operation not permitted: '/var/repo/config/' START OF TRACEBACK ------------------------------------------------------------------------ File: /opt/noc/lib/nbsocket.py (Line: 447) И этого трейсбека пять экранов :) Да, теперь в папке есть *.tmp, это конфиг. Вставить ник Quote
mikevlz Posted March 26, 2009 Posted March 26, 2009 завел fcgi+nginx на FreeBSD7. Еще бы заставить его конфиги сливать... Вставить ник Quote
dvolodin Posted March 27, 2009 Posted March 27, 2009 noc-sla - пока еще экспериментальный. Он честно грузит пробы, выполняет их, пока дампит вывод на stdout. etc/noc-sla.conf [main] logfile = /var/log/noc/noc-sla.log loglevel = info pidfile = /var/log/noc/noc-sla.pid [webfarm1] probe = http objects = 10.0.0.1, 10.0.0.2 url = http://site1.com/ user_agent = MyUA [webfarm2] probe = http objects = 10.0.0.3, 10.0.0.4 url = http://site2.com/ События он пока не генерирует, поэтому по умолчанию не запускается. сейчас смотрим на запуск служб python scripts/noc-sla.py start Traceback (most recent call last): File "scripts/noc-sla.py", line 16, in <module> sla=SLAMonitor() File "/opt/noc/pm/sla.py", line 26, in __init__ Daemon.__init__(self) File "/opt/noc/lib/daemon.py", line 45, in __init__ self.load_config() File "/opt/noc/lib/daemon.py", line 85, in load_config if self.config.get("main","logfile"): File "/usr/local/lib/python2.5/ConfigParser.py", line 511, in get raise NoSectionError(section) ConfigParser.NoSectionError: No section: 'main' Впечатление такое, что забыли положить noc-sla.conf Вставить ник Quote
dvolodin Posted March 27, 2009 Posted March 27, 2009 repo_path - это относительный а не абсолютный путь. Если репозитории лежат в /var/repo, то репозиторий для конфигов создается автоматически в /var/repo/config. Есть в repo_path объекта указано sw/dlink.cfg, то конфиг положится в файл /var/repo/config/sw/dlink.cfg. да, и еще одно... За стенкой стоит Dlink DES3526, завел его как объект. Сказал, что конфиг у него управляется. В списке объектов в табличке можно щелкнуть Scripts, выбрать get_config. Конфиг оно мне покажет.По расписанию он должен сливаться в /var/repo/des3526.cfg раз в 5 минут. В /var/repo совсем пусто. В логах noc-sae: 2009-03-26 19:55:38,887 INFO Task cm.config_pull is terminated with 'True' 2009-03-26 19:55:43,243 ERROR UNHANDLED EXCEPTION (2009-03-26 19:55:43.230115) Working directory: /opt/noc <type 'exceptions.OSError'> [Errno 1] Operation not permitted: '/var/repo/config/' START OF TRACEBACK ------------------------------------------------------------------------ File: /opt/noc/lib/nbsocket.py (Line: 447) И этого трейсбека пять экранов :) Да, теперь в папке есть *.tmp, это конфиг. Вставить ник Quote
mikevlz Posted March 27, 2009 Posted March 27, 2009 (edited) Вопрос немного поменялся. Трейсбеков нет, в логах "шеф, усе у ажуре!". Конфигов тоже нет. Через скрипты конфиг получаю и через дебаг, и из веб-интерфейса. 2009-03-27 14:41:51,188 INFO Executing cm.config_pull 2009-03-27 14:41:51,223 INFO Task cm.config_pull is terminated with 'True' о как... Edited March 27, 2009 by mikevlz Вставить ник Quote
dvolodin Posted March 27, 2009 Posted March 27, 2009 да, и еще одно... За стенкой стоит Dlink DES3526, завел его как объект. Сказал, что конфиг у него управляется. В списке объектов в табличке можно щелкнуть Scripts, выбрать get_config. Конфиг оно мне покажет.По расписанию он должен сливаться в /var/repo/des3526.cfg раз в 5 минут. Это не совсем так. Раз в 5 минут будет запускаться процесс снятия устаревших конфигов. Конфиг с одной и той же железки по умолчанию перечитывается раз в день (Configuration Management > Config > <железка> - параметр pull_every). Если железка кидает syslog или snmp trap'ы на активатор, то для некоторых железок (c Cisco IOS и Juniper JUNOS) система обнаруживает изменение конфига и помечает в расписании на железку, что конфиг надо перечитать через 10 минут. Для других железок настроить это очень просто: Перейти в Fault Management > Setup > Event Classification Rules. По правому краю экрана будет список классов событий, там надо нажать "Config Changed". Можно посмотреть, как это вообще выглядит. Чтобы не набивать regexp'ы руками можно поступить еще проще: Перейти в FM > Events, найти событие, которое зафиксировало смену конфига и нажать на кнопку "Create Rule" Вопрос немного поменялся. Трейсбеков нет, в логах "шеф, усе у ажуре!".Конфигов тоже нет. Через скрипты конфиг получаю и через дебаг, и из веб-интерфейса. 2009-03-27 14:41:51,188 INFO Executing cm.config_pull 2009-03-27 14:41:51,223 INFO Task cm.config_pull is terminated with 'True' о как... Надо ему намекнуть, что пора бы сходить и перечитать конфиг.Делается это так: Configuration Management > Configs, выбрать железку. В поле Next Pull выставить текущее время. Тогда она будет считать, что конфиг устарел и при следующем запуске cm.pull_config его перечитает Вставить ник Quote
mikevlz Posted March 27, 2009 Posted March 27, 2009 (edited) Починил. Теперь конфиги есть, сохраняются. Fault management не открывается, ошибку выдает. Как дебажить? Edited March 27, 2009 by mikevlz Вставить ник Quote
dvolodin Posted March 27, 2009 Posted March 27, 2009 Починил. Теперь конфиги есть, сохраняются.Fault management не открывается, ошибку выдает. Как дебажить? Как выглядит traceback? Вставить ник Quote
mikevlz Posted March 27, 2009 Posted March 27, 2009 Где смотреть? Просто перехожу Fault management->Events IE Говорит, что "Неудалось открыть узел http://bla-bla/fm/ Операция прервана" Все, после этого ошибка 404. Вставить ник 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.