Перейти к содержимому
Калькуляторы

новый opensource софт для NOC провайдера

И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?

Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык.

Как это делать? :)

map-скрипты, да, в профиле. Каждый скрипт в отдельном файле, прописывать их нигде не надо, и так найдет. Если скрипты достаточно универсальны и могут пригодиться другим, то можно поместить их в основной дистрибутив. Затык может быть только в случае, если меняется имеющийся скрипт, тогда hg pull отругается.

Сделал копию get_version

обозвал get_version_my, для длинка.дес3ххх.

Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail

Пробую manage debug-script - получаю внятный результат.

Кстати, получил в итоге такое:

(?P<version>[\S\s].+)\nH"

DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

 

Пытаюсь ставить сабж на Дебиан по мануалу.

 

При запуске

$ python manage.py syncdb

 

получаю трейсбеки:

 

Traceback (most recent call last):

File "manage.py", line 11, in <module>

execute_manager(settings)

File "/usr/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/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/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/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 218, in execute

self.validate()

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 246, in validate

num_errors = get_validation_errors(s, app)

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/validation.py", line 28, in get_validation_errors

for (app_name, error) in get_app_errors().items():

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 128, in get_app_errors

self._populate()

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 57, in _populate

self.load_app(app_name, True)

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 72, in load_app

mod = __import__(app_name, {}, {}, ['models'])

File "/home/mpls/www2/noc/../noc/main/models.py", line 31, in <module>

downloader_registry.register_all()

File "/home/mpls/www2/noc/../noc/lib/registry.py", line 55, in register_all

__import__(mb+f,{},{},self.classname)

ValueError: Empty module name

 

Подскажите, плиз, куда копать =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?

Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык.

Как это делать? :)

map-скрипты, да, в профиле. Каждый скрипт в отдельном файле, прописывать их нигде не надо, и так найдет. Если скрипты достаточно универсальны и могут пригодиться другим, то можно поместить их в основной дистрибутив. Затык может быть только в случае, если меняется имеющийся скрипт, тогда hg pull отругается.

Сделал копию get_version

обозвал get_version_my, для длинка.дес3ххх.

Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail

Пробую manage debug-script - получаю внятный результат.

Кстати, получил в итоге такое:

(?P<version>[\S\s].+)\nH"

DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'}

Тогда имеет смысл заменть на такое:

Firmware Version\s+:\s+(?:Build\s+)?(?P<version>\S+)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?

Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык.

Как это делать? :)

В последних коммитах появилась крайне полезная и давно востребованная возможность: локальные модификации.

 

Редактировать напрямую развернутый дистрибутив NOC - порочная практика, так как при апдейтах из репозитория возникнет конфликт и апдейты не накатятся, а при апдейте из исходников все изменения просто потеряются.

 

Выход следующий: в NOC'е есть каталог local/ который игнорируется при апдейтах. В него и надо писать локальные изменения.

 

Сценарий первый - хочется поменять шаблон страницы. Они лежат в обычных HTML файлах.

 

Если шаблон лежит в template/admin/sa/managedobject/change_list.html, то его нужно скопировать в local/admin/sa/managedobject/change_list.html и там уже редактировать. Он перекроет имеющийся шаблон NOC. Для шаблонов типа main/success.html нужно сделать двойника в local/main/success.html. То есть template/admin/ перекрывается из local/admin, а шаблоны приложений - из local/<приложение>/

 

Сценарий второй - необходимо изменить работу скрипта, например DLink.DES3xxx.get_version. Оригинал лежит в sa/profiles/DLink/DES3xxx/get_version.py. Нужно скопировать его в local/sa/profiles/DLink/DES3xxx/get_version.py и там редактировать.

 

Сценарий третий - необходимо поправить профиль DLink.DES3xxx. Оригинал лежит в sa/profiles/DLink/DES3xxx/__init__.py, нужно скопировать его в sa/profiles/DLink/DES3xxx/__init__.py

 

Сценарий четвертый - необходимо создать профить Vendor.Box и скрипты Vendor.Box.get_version и Vendor.Box.get_config.

Профиль и скрипты надо разместить в local/sa/profiles/Vendor/Box/ в файлах __init__.py, get_version.py и get_config.py

 

Стоящие изменения мы с удовольствием включим в основной дистрибутив NOC :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?

Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык.

Как это делать? :)

Сделал копию get_version

обозвал get_version_my, для длинка.дес3ххх.

Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail

Пробую manage debug-script - получаю внятный результат.

Кстати, получил в итоге такое:

(?P<version>[\S\s].+)\nH"

DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'}

Тогда имеет смысл заменть на такое:

Firmware Version\s+:\s+(?:Build\s+)?(?P<version>\S+)

это исходное значение, возращает оно только слово Build.

Мое исправление возвращает вместе номером версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

 

Пытаюсь ставить сабж на Дебиан по мануалу.

 

При запуске

$ python manage.py syncdb

 

получаю трейсбеки:

 

Traceback (most recent call last):

File "manage.py", line 11, in <module>

execute_manager(settings)

File "/usr/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/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/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/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 218, in execute

self.validate()

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 246, in validate

num_errors = get_validation_errors(s, app)

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/validation.py", line 28, in get_validation_errors

for (app_name, error) in get_app_errors().items():

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 128, in get_app_errors

self._populate()

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 57, in _populate

self.load_app(app_name, True)

File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 72, in load_app

mod = __import__(app_name, {}, {}, ['models'])

File "/home/mpls/www2/noc/../noc/main/models.py", line 31, in <module>

downloader_registry.register_all()

File "/home/mpls/www2/noc/../noc/lib/registry.py", line 55, in register_all

__import__(mb+f,{},{},self.classname)

ValueError: Empty module name

 

Подскажите, плиз, куда копать =)

Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче.

А на убунте все кроме sphinx ставится из репозитория.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче.

А на убунте все кроме sphinx ставится из репозитория.

Какая проблема с touch?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

перезапустил все службы - заработал мой скрипт...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

перезапустил все службы - заработал мой скрипт...
в local/ ?

 

Перезапускать надо fcgi, sae и activator

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не, у меня оно не в локал... упустил я момент, если изначально надо было именно в local эти скрипты класть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не, у меня оно не в локал... упустил я момент, если изначально надо было именно в local эти скрипты класть.

Можно и перенесли, модификаций не требуется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче.

А на убунте все кроме sphinx ставится из репозитория.

Какая проблема с touch?

Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой.
Это как же надо было накуриться, чтобы сломать touch? может на файле что-то вроде флага noschg?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дмитрий, день добрый!

 

еще момент - при логине в noc не супервайзером, который встроенный noc, а обычным юзером с правами например делать все и везде при обновлении страниц с конфигами (в принципе любых страниц) при отображении оно залипает на некоторое время, я так понимаю обрабатывает чего юзеру можно, чего нельзя, если под noc зайти, то этой задержки нет,

оно излечимо или это генетика?

В последних коммитах (r1364) оптимизировали эти запросы. Проверьте, полегчало ему?

 

PS: Комментарий "Idiotic implementation" там не зря стоял :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой.
Это как же надо было накуриться, чтобы сломать touch? может на файле что-то вроде флага noschg?

Да нет, обламывалось оно чаще всего на обычных логах. Никаких флагов на них не стоит. А отмочили конечно знатно =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Засунули в базу 280 свичей одинаковых практически. Попытался сделать матричный отчет по get_version - выдало минуты через три fail. Что смотреть, что крутить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

при наличии local/sa/profiles/DLink/* отказалось напрочь синхронизироваться (post-update)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

при наличии local/sa/profiles/DLink/* отказалось напрочь синхронизироваться (post-update)

Где именно обламывается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Засунули в базу 280 свичей одинаковых практически. Попытался сделать матричный отчет по get_version - выдало минуты через три fail. Что смотреть, что крутить?
Полезно посмотреть, сколько процессов telnet/ssh запущено активатором и какой лимит на активаторе. Скорее всего, пытается достучаться до мертвых железок.

 

Скрипт завершается либо по завершению всех map скриптов, либо по таймауту (180 сек, можно менять в форме)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за продукт, вещь действительно мощная, но приходится разбираться "методом тыка" :)

 

Есть свич, он присылает на активатор трапы, эти трапы попадают в Unclassified Trap OIDs хотя там четко написано IF-MIB::linkDown,

как мне привязать эти трапы к определенному классу ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за продукт, вещь действительно мощная, но приходится разбираться "методом тыка" :)

 

Есть свич, он присылает на активатор трапы, эти трапы попадают в Unclassified Trap OIDs хотя там четко написано IF-MIB::linkDown,

как мне привязать эти трапы к определенному классу ?

Правилами классификации (Сlassification Rules).

Для link down есть несколько правил, можно посмотреть их в качестве примера.

 

Чтобы добавить свое правило можно:

1. Открыть событие на просмотр

2. Нажать на кнопку "Create Rule" (справа сверху)

3. Отредактировать созданное правило и сохранить

4. В списке правил классификации нажать кнопку "Refresh Rules"

5. Опять открыть событие на просмотр и нажать кнопку "Re-Classify" сверху

6. Секунд через 10 обновить страницу и убедиться, что событие было классифицировано

 

А что за железка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что за железка?

Zyxel 3124-4F + залил еще родной MIB и еще несколько по зависимостям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что за железка?

Zyxel 3124-4F + залил еще родной MIB и еще несколько по зависимостям.

Тогда, скорее всего, отдельное правило понадобится

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всего, отдельное правило понадобится
уже разобрался, спасибо !

А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всего, отдельное правило понадобится
уже разобрался, спасибо !

А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :)

SQL'ем.

 

noc$ psql noc
UPDATE fm_event SET status='U' WHERE .....

 

 

всего, отдельное правило понадобится
уже разобрался, спасибо !

А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :)

Какое правило получилось? (Там рядом с правилом ссылочка Python)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.