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

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

Здравствуйте.

 

Поставил себе NOC 0.2.2, при установке особых проблем не возникло, но при выполнении ./manage.py migrate возникла такая ошибка:

Running migrations for main:
psycopg2.DataError: character 0xd090 of encoding "UTF8" has no equivalent in "LATIN1"

Надо было создать базу с кодировкой UTF8
При запуске, в веб-интерфейсе, во всех таблицах кроме main происходит следующее:

Environment:
Exception Type: ProgrammingError at /admin/sa/managedobject/
Exception Value: relation "sa_managedobject" does not exist

 

Вопрос: связано-ли первое со вторым и как с этим бороться. Система Slackware 12.1, все пакеты ставил по мануалу.

Заранее спасибо.

Связано, из-за ошибки с кодировкой базы не были построены все необходимые таблицы

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


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

Тогда в noc-sae.conf и noc-activator.conf надо прописать:

 

loglevel = debug

 

перезапустить активатор и SAE, повторить попытку и посмотреть, что в логах

Лежит куча файликов одинакового сожержания:
(dp1

S'component'

p2

S'noc-activator'

p3

sS'source'

p4

S'system'

p5

sS'traceback'

p6

VUNHANDLED EXCEPTION (2009-06-01 16:25:59.245719)\u000AWorking directory: /opt/noc\u000A<class 'socket.error'>\u000A(111, 'Connection refused')\u000ASTART OF TRACEBACK\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 437)\u000AFunction: loop\u000A 430 raise\u000A 431 if r or w:\u000A 432 # Write events processed before read events\u000A 433 # to catch connection refused causes\u000A 434 for f in w:\u000A 435 if f in self.sockets:\u000A 436 try:\u000A 437 ==> self.sockets[f].handle_write()\u000A 438 except:\u000A 439 error_report()\u000A 440 try:\u000A 441 self.sockets[f].close()\u000A 442 except:\u000A 443 pass\u000AVariables:\u000A w = [4]\u000A f = 4\u000A self = <noc.lib.nbsocket.SocketFactory object at 0x8dd69ac>\u000A s = <noc.sa.activator.ActivatorSocket object at 0x8f081cc>\u000A r = [4]\u000A timeout = 1\u000A x = []\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 271)\u000AFunction: handle_write\u000A 264 try:\u000A 265 self.socket.send("")\u000A 266 except socket.error,why:\u000A 267 if why[0]==EPIPE:\u000A 268 self.on_conn_refused()\u000A 269 self.close()\u000A 270 return\u000A 271 ==> raise socket.error,why\u000A 272 self.handle_connect()\u000A 273 return\u000A 274 TCPSocket.handle_write(self)\u000A 275 \u000A 276 def on_conn_refused(self): pass\u000A 277 ##\u000AVariables:\u000A self = <noc.sa.activator.ActivatorSocket object at 0x8f081cc>\u000A why = error(111, 'Connection refused')\u000A------------------------------------------------------------------------\u000AEND OF TRACEBACK

p7

sS'type'

p8

S'Unhandled Exception'

p9

sS'ts'

p10

I1243862759

s.

Почему 111-ая ошибка не понимаю, если через консоль все отлично. Снес систему и поставил заново нок на чистый дебиан ,та же ситуация.

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


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

Вышел NOC 0.2.3. Изменений достаточно много:

 

Демон noc-correlator переписан полностью, правила корреляции событий теперь записываются в новой, более простой форме. noc-correlator ищет связи между событиями и, в случае обнаружения, выполняет заданные действия. Наиболее простой тип событий - чередующиеся события (например link up/link down). В таком случае можно настроить, чтобы следующее событие автоматически закрывало предыдущее. В более сложных случаях коррелятор может найти событие-первопричину и спрятать за ней все последствия. Таким образом, в списке активных событий будут видны только события, требующие непосредственной реакции.

 

Появилась подсветка синтаксиса в просмотре конфигов с устройств, теперь длинные конфиги удобнее читать.

 

Вылечен memory leak в SAE.

 

В "Address Space Management" теперь можно нажатием одной кнопки показать все свободные адреса.

 

Обновлена документация к модулю DNS. Описан один из способов интеграции NOC и BIND, в дистрибутиве теперь лежат все необходимые скрипты и конфиги.

 

Множество багфиксов и мелких улучшений. Поный Changelog: по ссылке

 

Тогда в noc-sae.conf и noc-activator.conf надо прописать:

 

loglevel = debug

 

перезапустить активатор и SAE, повторить попытку и посмотреть, что в логах

Лежит куча файликов одинакового сожержания:

Активатор не может достучаться до SAE? в конфигах правильно адреса и порты прописаны?

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


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

noc-activator.conf

[main]
logfile  = /var/log/noc/noc-activator.log
loglevel = debug
pidfile  = /var/log/noc/noc-activator.pid
[activator]
name            = unknown
listen_traps    =
listen_syslog   =
secret          = thesecretkey
software_update = true
max_pull_config = 10
[sae]
host = 127.0.0.1
port = 19701
local_address =
[path]
fping      = /usr/bin/fping

noc-sae.conf

[main]
logfile  = /var/log/noc/noc-sae.log
loglevel = debug
pidfile  = /var/log/noc/noc-sae.pid
[sae]
listen = 127.0.0.1
port   = 19701
refresh_event_filter = 600
[xmlrpc]
listen = 127.0.0.1
port   = 19702

 

пробовал в конфиге активатора указать

name= noc

secret = *passw*

ниего не поменялось

Изменено пользователем flash.one

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


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

пробовал в конфиге активатора указать

name= noc

secret = *passw*

ниего не поменялось

в конфиге активатора надо указывать реквизиты, под которыми сей активатор в базе noc зарегистрирован - настраивается с web-интерфейса

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


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

сделал соответствие web-интерфейса и конфига, все равно ошибка:

(dp1
S'component'
p2
S'noc-activator'
p3
sS'source'
p4
S'system'
p5
sS'traceback'
p6
VUNHANDLED EXCEPTION (2009-06-01 18:45:59.217445)\u000AWorking directory: /opt/noc\u000A<class 'socket.error'>\u000A(111, 'Connection refused')\u000ASTART OF TRACEBACK\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 437)\u000AFunction: loop\u000A  430                         raise\u000A  431                     if r or w:\u000A  432                         # Write events processed before read events\u000A  433                         # to catch connection refused causes\u000A  434                         for f in w:\u000A  435                             if f in self.sockets:\u000A  436                                 try:\u000A  437 ==>                                 self.sockets[f].handle_write()\u000A  438                                 except:\u000A  439                                     error_report()\u000A  440                                     try:\u000A  441                                         self.sockets[f].close()\u000A  442                                     except:\u000A  443                                         pass\u000AVariables:\u000A                   w = [4]\u000A                   f = 4\u000A                self = <noc.lib.nbsocket.SocketFactory object at 0x947592c>\u000A                   s = <noc.sa.activator.ActivatorSocket object at 0x94a2c0c>\u000A                   r = [4]\u000A             timeout = 1\u000A                   x = []\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 271)\u000AFunction: handle_write\u000A  264                 try:\u000A  265                     self.socket.send("")\u000A  266                 except socket.error,why:\u000A  267                     if why[0]==EPIPE:\u000A  268                         self.on_conn_refused()\u000A  269                         self.close()\u000A  270                         return\u000A  271 ==>                 raise socket.error,why\u000A  272                 self.handle_connect()\u000A  273                 return\u000A  274             TCPSocket.handle_write(self)\u000A  275         \u000A  276         def on_conn_refused(self): pass\u000A  277     ##\u000AVariables:\u000A                self = <noc.sa.activator.ActivatorSocket object at 0x94a2c0c>\u000A                 why = error(111, 'Connection refused')\u000A------------------------------------------------------------------------\u000AEND OF TRACEBACK
p7
sS'type'
p8
S'Unhandled Exception'
p9
sS'ts'
p10
I1243871159
s.

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


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

сделал соответствие web-интерфейса и конфига, все равно ошибка:

netstat -anp | grep python

cat /opt/noc/etc/noc-activator.conf

cat /opt/noc/etc/noc-sae.conf

 

"в студию" (с)

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


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

flash@flash:~$ netstat -anp | grep python
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
unix  3      [ ]         STREAM     CONNECTED     9756     3504/python         
unix  3      [ ]         STREAM     CONNECTED     9719     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9714     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9712     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9708     3504/python         
flash@flash:~$ su -
Пароль: 
flash:~# netstat -anp | grep python
unix  3      [ ]         STREAM     CONNECTED     9756     3504/python         
unix  3      [ ]         STREAM     CONNECTED     9719     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9714     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9712     3510/python         
unix  3      [ ]         STREAM     CONNECTED     9708     3504/python         
unix  3      [ ]         STREAM     CONNECTED     7722     3116/python         
unix  3      [ ]         STREAM     CONNECTED     7213     3020/python

 

Конфиги на два сообщения выше. Изменилось только

noc-activator.conf

[activator]
name            = default
listen_traps    =
listen_syslog   =
secret          = default
software_update = true
max_pull_config = 10

 

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


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

flash:~# netstat -anp | grep python

unix 3 [ ] STREAM CONNECTED 9756 3504/python

unix 3 [ ] STREAM CONNECTED 9719 3510/python

unix 3 [ ] STREAM CONNECTED 9714 3510/python

unix 3 [ ] STREAM CONNECTED 9712 3510/python

unix 3 [ ] STREAM CONNECTED 9708 3504/python

unix 3 [ ] STREAM CONNECTED 7722 3116/python

unix 3 [ ] STREAM CONNECTED 7213 3020/python[/code]

а это.... где noc-sae? запустите и гляньте, оно вообще порты открывает нужные?

 

tcp 0 0 127.0.0.1:19701 0.0.0.0:* LISTEN 14331/python

tcp 0 0 127.0.0.1:19702 0.0.0.0:* LISTEN 14331/python

tcp 0 0 127.0.0.1:19701 127.0.0.1:35665 ESTABLISHED 14331/python

tcp 0 0 127.0.0.1:35665 127.0.0.1:19701 ESTABLISHED 11599/python

udp 0 0 192.168.4.15:162 0.0.0.0:* 11599/python

udp 0 0 192.168.4.15:514 0.0.0.0:* 11599/python

 

вот так примерно оно работающее выглядит

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


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

что до запуска sae и активатора, что после картина не меняется:(

flash:/opt/noc# netstat -anp | grep python
unix  3      [ ]         STREAM     CONNECTED     64353    3595/python         
unix  3      [ ]         STREAM     CONNECTED     10191    3595/python         
unix  3      [ ]         STREAM     CONNECTED     10095    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10077    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10075    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10073    3595/python         
unix  3      [ ]         STREAM     CONNECTED     7959     3239/python         
unix  3      [ ]         STREAM     CONNECTED     7447     3134/python

что от рута запускать что от noc'а

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


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

что до запуска sae и активатора, что после картина не меняется:(

flash:/opt/noc# netstat -anp | grep python
unix  3      [ ]         STREAM     CONNECTED     64353    3595/python         
unix  3      [ ]         STREAM     CONNECTED     10191    3595/python         
unix  3      [ ]         STREAM     CONNECTED     10095    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10077    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10075    3601/python         
unix  3      [ ]         STREAM     CONNECTED     10073    3595/python         
unix  3      [ ]         STREAM     CONNECTED     7959     3239/python         
unix  3      [ ]         STREAM     CONNECTED     7447     3134/python

что от рута запускать что от noc'а

SAE строго от noc. Активатор, если без коллекторов snmp и syslog - от noc,

с коллекторами и на linux - от root'а.

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


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

все время обоих запускал именно от noc

просто для полной статистики выдал вам оба варианта

 

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


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

все время обоих запускал именно от noc

просто для полной статистики выдал вам оба варианта

В noc-sae.log что вообще?

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


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

Огромное спасибо за помощь, наконец-то нашел ошибку.

В noc-sae.log что вообще?
В noc-sae.log писало:

Working directory: /opt/noc
<type 'exceptions.IOError'>
[Errno 2] No such file or directory: 'etc/noc-activator.defaults'
START OF TRACEBACK

Странно конечно что оно пытается считывать конфиг с defaults. До этого видел эту ошибку но никак не мог понять зачем ему defaults.Переименовал noc-activator.conf в noc-activator.defaults и сразу все заработало.

Но по моему так быть не должно если в самом дефолте пишется что надо его переименовывать в conf.

Изменено пользователем flash.one

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


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

Огромное спасибо за помощь, наконец-то нашел ошибку.
В noc-sae.log что вообще?
В noc-sae.log писало:

Working directory: /opt/noc
<type 'exceptions.IOError'>
[Errno 2] No such file or directory: 'etc/noc-activator.defaults'
START OF TRACEBACK

Странно конечно что оно пытается считывать конфиг с defaults. До этого видел эту ошибку но никак не мог понять зачем ему defaults.Переименовал noc-activator.conf в noc-activator.defaults и сразу все заработало.

Но по моему так быть не должно если в самом дефолте пишется что надо его переименовывать в conf.

Это нормальное и описанное поведение.

 

Сначала читается .defaults (в любом случае), потом .conf, если он есть. Настройки из .conf перебивают настройки из .defaults.

.default идут вместе с дистрибутивом и перебиваются апдейтами. .conf - локальные настройки, которые не перебиваются апдейтами, их можно править из web-интерфейса.

 

 

 

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


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

2dvolodin

 

А можно еще пару фичереквестов?

 

1. К virtual circuit добавить что-то вроде long description, чтобы можно было дописывать связанную информацию, ну и как вариант какие-то поля куда можно заносить порты свичей/рутеров, которыми заканчиваются вланы. Типа в влане 2 - свич 172.16.0.5 порт 3 тегированный (клиентская сторона), свич 172.16.0.100 порт 10 тегированный (рутер 172.16.1.1), рутер 172.16.1.1 интерфейс gi0/3.15.

 

2. В Peering management/Peers - localpref используется при построении RPSL объектов как есть, многие так и делают, хотя по правилам RPSL'евский pref это 65535-localpref. Можно ли туда какой-то костыль вставить, чтобы можно было переключать localpref/pref в этом поле?

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


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

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

 

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

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

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


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

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

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

Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает?

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


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

Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает?

2-3 секунды при тех мощностях, что сейчас выделено для noc

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


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

Возвращаясь к теме конфигов..

В секции Configuration Management в меню Config вижу список конфигов для созданных мной обьектов, справа есть ссылка view, которая

должна отображать полученный конфиг, я правильно понимаю.?

А там отображается к примеру:

Object info
ID    2
Repo Path    10.77.1.10.cfg
Revision    
Modified    
Categories    

Content
None

Plain Text

Текстовки конфига нету

как увидеть конфиг?

Изменено пользователем flash.one

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


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

Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает?

2-3 секунды при тех мощностях, что сейчас выделено для noc

Долго. Попробую пооптимизировать запросы.

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


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

Дмитрий, вот еще какой функционал думается мне был бы многими востребован, на мой взгляд в noc почти все для этого есть:

научить его исполнять определенные оператором наборы команд на определенных устройствах в определенное время,

очень сильно поможет автоматизировать рутинные процедуры мелких изменений конфигураций на куче подконтрольных однотипных устройств.

или если оно где-то описано, расскажите как система считывает периодическую задачу себе из базы и передает команду активатору

дальше че-нить попробуем придумать в плане костылей

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


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

Дмитрий, вот еще какой функционал думается мне был бы многими востребован, на мой взгляд в noc почти все для этого есть:

научить его исполнять определенные оператором наборы команд на определенных устройствах в определенное время,

очень сильно поможет автоматизировать рутинные процедуры мелких изменений конфигураций на куче подконтрольных однотипных устройств.

или если оно где-то описано, расскажите как система считывает периодическую задачу себе из базы и передает команду активатору

дальше че-нить попробуем придумать в плане костылей

Да, про это спрашивают давно, руки не доходят :)

 

С периодическими задачами все просто: в каждом приложении есть свой каталог periodic. Каждая задача лежит в отдельном .py файле.

В файле должен присутсвовать класс Task с методом execute. cm.config_pull как пример.

 

Для того, чтобы noc узнал про новую задачу необходимо перезапустить FCGI и SAE. Условия запуска задачи задаются в Service Activation > Task Shedules.

На настоящий момент поддерживается только периодический перезапуск задачи через заданный интервал времени.

 

Задачи выполняются SAE. Главный thread в SAE занимается мультиплексированием каналов и сбором событий от активаторов. Каждая периодическая задача

запускается в отдельном thread'е. Для доступа к потрохам SAE из метода execute можно использовать атрибут self.sae.

 

Пример, как можно дернуть SAE: Config.pull

 

Важный момент: SAE-неблокирующий и вся работа с активатором программируется в стиле continuation passing.

SAE шлет активатору RPC request с параметрами и запоминает функцию-continuation, связанную с данным запросом. При получении RPC reply от активатора

SAE выполняет запомненный continuation, в который передает параметры result и error.

 

Аналога call/cc в python'е нет, поэтому continuation делается в виде вложенной функции. Передается не только функция, а весь closure (указатель на функцию, текущее состояние переменных), поэтому на в момент возврата из вложенной функции можно использовать все значения переменных родительской функции.

 

Отфильтровать нужные объекты можно через django'вский ORM. Выглядеть это будет примерно так: ManagedObject.objects.filter(.....).

 

Сами скрипты, которые можно выполнять, кладутся в профиль устройства по аналогии с get_config и get_version. Скрипт выполняется в отдельном thread'е в активаторе и логика его работы вполне линейна. Из скриптов можно дергать другие скрипты.

 

В качестве примера: скрипт может принять номер текущей версии firmware и URL для скачки, дернуть скрипт get_version, получить текущую версию, при несовпадении проапдейтить софт и перегрузить ящик. Апдейт софта и перезагрузку тоже целесообразно сделать отдельными скриптами, чтобы повторно использовать.

 

 

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


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

Вышел NOC 0.2.4. Среди основных изменений:

 

Встроенные on-line справочники. Можно создавать собственные справочники с нужными полями. Вместе с NOC уже идет набор справочников, которые могут автоматически

обновляться с сайта update.nocproject.org. В релиз включены справочники:

 

* Коды стран в номерном плане E.164

* База IEEE OUI (фактически, первые три октета MAC-адреса)

* Коды стран ISO 3166

* Коды завершения вызовов Q.931

* Российский план нумерации (коды ABC для субъектов федерации)

* Выписка из реестра Российского плана нумерации (Выделенная номерная емкость в кодах ABC/DEF для россии)

 

Данные для справочников можно загружать с любого ftp/http. Пока поддерживаются форматы CSV и csv.gz

 

В Knowledge Base появились шаблоны статей. Шаблоны задают текст для заголовка и тела статьи и набор категорий по умолчанию. В шаблонах можно указывать

переменные (заключены в {{...}}). При создании статьи из шаблона KB попросит заполнить значения для переменных и создаст новую статью. Шаблоны полезны,

когда нужно добавлять в базу однотипные статьи (например, данные по BGP пирам, по клиентам, по SIP-транкам) и сразу разносить их по нужным категориям.

В комбинации с макросом search шаблоны позволяют использовать NOC как простенькую систему документооборота.

 

Среди других доработок:

 

* В качестве допустимого адреса активатора в Service Activation > Setup > Activators можно указывать диапазон адресов.

* Появилась базовая поддержка для VoiceFinder AddPack. Теперь NOC умеет выдирать конфиги с 25 типов устройств.

* В модуле "Virtual Circuit Management" можно создавать новые типы VC со своими ограничениями.

 

Рекомендую всем обновиться.

 

RELEASE NOTES

 

 

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


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

Дмитрий, а что Вы скажете насчет моего вопроса ?

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


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

Join the conversation

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

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

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

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

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

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

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