nocproject.org
01:19
А у нас землетрясение было... Сеть цела :)
01:22
Чёто очень часто.., предыдущие 10 февраля.. только было, а сегодня трясло около 5 минут!!! АЖ СТЕНЫ СКРИПЕЛИ!....
 
03:43
разобрался с Mapnik и OSM в первом приближении
03:44
получилось залить один район Москвы в базу и примерно понял, как с него генерировать тайлы
03:45
там на выходе вообще статика получается
03:46
правда пока открытый вопрос - генерить ли их при заливке все сразу или плодить по требованию
03:50
ну и думать надо, кидать ли тайлы тупо на файловую систему или в монгу залить
03:52
по идее штука должна работать весьма шустро
 
03:52
в монгу канечно
03:52
там их можно попилить нормально между серверами
 
03:55
pros et contra смотреть надо
03:55
с одной стороны, конечно, да
03:56
разреплицировать их можно будет
03:56
с другой --  nginx статику раздает на порядок быстрее
03:57
в принципе можно подумать и совместить кеширование на nginx и backend в монге
03:58
тайлы небольшие, вряд ли кому нужен Range: в запросах к ним
03:58
есть еще адский вариант -  nginx-gridfs
 
06:43
а подскажите, плз, как победить ошибку "noc.fm.models.OIDCollision: Cannot resolve OID 1.3.6.1.2.1 collision between RFC1213-MIB::mib-2 and SNMPv2-SMI::mib-2. No preference for RFC1213-MIB" вываливающуюся при синхронизации мибов при пост-апдейте?
 
06:50
./noc sync-collections
 
06:50
dvolodin, inventory>interfaces недоделан или просто у меня не работает (PS noc-discovery отключен)
 
06:51
нет его вообще
06:51
рыба
07:00
и без noc-discovery работать не будет
07:00
:)
07:09
07:09
07:13
какие будут предложения?
 
07:26
синк коллекшн не помогает... да и эта синхронизация при постапдейте проходит до синхронизации мибов
07:27
хм. хотя, теперь вываливается с другой ошибкой "noc.fm.models.OIDCollision: Cannot resolve OID 1.3.6.1.2.1.52 collision between INTEGRATED-SERVICES-MIB::intSrv and INT-SERV-MIB::intSrv. No preference for INTEGRATED-SERVICES-MIB"
 
07:29
хм. чередуя sync-collection и sync-mibs ошибки синк-миба меняются... попробую поцилить
 
07:29
mongo noc
07:29
db.noc.mibpreferences.find()
07:29
что выдает
 
07:30
а как тогда синхронизация проходит, если там ничего нет?
 
07:31
я не представляю механизма процесса
07:31
кстати
07:32
с n-го раза похоже синхронизация мибов прошла до конца
07:32
после зацикливания синхронизаций коллекций и мибов
07:32
сейчас еще раз постапдейт пущу
07:33
post-update complete
07:33
интересная трава...
07:34
db.noc.mibpreferences.find() - по прежнему пустой вывод
07:34
(а что должно быть?)
 
07:37
при синхронизации мибов выдавало "creating JUNIPER-VPN-MIB" и тп
07:37
теперь просто пишет "Synchnonizing MIBs" и всё
07:39
попробовать ещё раз hg pull и инсталл?
 
07:43
0.7_3
07:46
сделал ещё раз hg pull -u;  setup.py install; потом удалил main/apps/auth и changesquarantine* (опять появляются), запустил постапдейт - всё прошло
07:47
на этапе синхронизации мибов мелькнула одна строчка про мибы от джунипера
07:47
(прошлый раз вроде поболее было)
07:47
db.noc.mibpreferences.find() по прежнему пуст
07:49
db.noc.mibs.find() - не пуст
07:50
mibdata.find() выбрасывает из монго
 
08:24
с аутентификацией в монге все в порядке?
08:25
выбрасывать не должно
08:29
что касается GIS'ов
08:29
кто какие источники данных использует?
 
08:42
географических
08:43
карты какие?
 
08:59
а какой формат нужен? всякие яндексы и 2гисы не пойдут? правда там api у всех разные...
 
09:01
я думаю над общим workflow, как карты будут в систему попадать
 
09:01
hi all
09:01
как почистить монгу от определенного типа записей?
09:03
а именно вытереть все Network | Port Security | Port Security Violation
 
09:10
события?
09:10
./noc events
09:14
09:14
что-то вроде такого вырисовывается
09:15
конечная цель - всеми правдами и неправдами заполучить несколько наборов tilecache
09:15
Это виды подложки
09:15
по идее, они тоже должны настраиваться
09:16
по дефолту будет - Map, Sattelite, Hybrid
09:16
в принципе может и свое быть
09:16
типа "Ворованные карты Генштаба" :)
09:17
или "Аэрофотосъемка"
 
09:17
а street view будет? :)
 
09:18
но это же инвентори
09:19
делаешь фотки узла связи, нок их обрабатывает, создает 3D модель
 
09:19
в какой-то мере, да
09:19
хранилище для фоток привязанное - надо, их много
09:20
наверное, если фотки с координатами, можно и на карте показывать
09:21
inventory свое хозяйство рисует поверх тайловой подложки
 
09:21
нужно продумать взаимодействие пользователя с картой
 
09:21
как там создавать узлы, отмечать что-то,
09:21
может рисовать
 
09:21
Иногда в значениях бывает N/A
 
09:22
получать информацию по объектам
 
09:22
Dmitry1: -- None тогда
09:22
я уже думал -- FloatParameter() | NoneParameter()
09:22
если нет в выводе -- просто пропускать его
09:22
если N/A - то None
09:22
zi_nnov: кликами это делается
 
09:23
что касается горизонтальной разводки
 
09:23
А как отрабатывают скрипты, если вместо опущенного параметра, я им выдаю параметр, но со значением None ?
 
09:23
то, обычно, кликаешь на объект - можешь добавлять все объекты, котоыре могут быть с ним связаны
09:24
Dmitry1: если ему разрешили None, то пройдет именно None
09:24
zi_nnov: в целом примерно так
09:24
кидаешь колодец, как точку
09:24
потом еще
09:25
тыкаешь в колодец, видишь, что можешь создать канал
 
09:25
FloatParameter(required=False) или IntParameter(required=False) допускает None ?
 
09:25
кидаешь канал от колодца к колодцу
09:25
Dmitry1: нет
09:25
FloatParameter() | NoneParameter()
09:25
вот такое допускает
 
09:25
09:25
Как передать туда None ?
 
09:26
я еще не доделал его
09:26
пытаюсь понять, что там еще можно получить
09:26
сама карта - просто подложка под общим безобразием
 
09:27
dvolodin, мы говорим об одном и том же, но я не вижу, что ты за своими словами представляешь, я бы стал говорить про конкретную реализацию.
 
09:27
интерактивны только объекты из inventory
 
09:27
Если параметр стоит "required": false
09:27
А я туда передаю параметр со значением None. Что произойдет?
09:28
Более точный пример:
 
09:29
есть required = False и параметра нет, он не попадет в Dict
 
09:30
"name": "name",
09:30
"type": "str",
09:30
"required": false
09:30
в правиле FM
09:30
regexp: ((?P<name>\S+))?
09:30
т.е. можеь быть, а может и не быть.
09:31
Если есть, то передается name: бла-бла. Если нету, то передается name: None
 
09:31
>>> print (FloatParameter(required=False)).clean(10)
09:31
10.0
09:31
>>> print (FloatParameter(required=False)).clean(None)
09:31
Traceback (most recent call last):
09:31
InterfaceTypeError: FloatParameter: None.
09:31
>>> print (FloatParameter(required=False) | NoneParameter(required=False)).clean(None)
09:31
None
09:32
>>> print (FloatParameter(required=False) | NoneParameter(required=False)).required
09:32
False
09:32
в FM не интерфейсы
 
09:32
Меня интересует для FM
 
09:32
required означает, что ты можешь не выделять name
09:32
и его просто не будет
 
09:33
Я про то, что если в регекспе не нашло такой переменной, то оно говорит ему None
09:34
Пример
09:34
%PIM-5-DRCHG: DR change from neighbor 10.0.32.42 to 10.0.32.34 on interface Tunnel1 (vrf VPN_Wayside)
 
09:35
В данном примере может присутствовать, а может и не присутствовать (vrf бла-бла)
 
09:37
dvolodin ./noc events Action: show, reclassify - а хде remove?
 
09:38
Про FM
09:39
Я пытаюсь сделать не два правила, когда в одном присутствует VRF, а в другом нет, - а одно.
 
09:39
ovg: а, пока не сделали
 
09:39
dvolodin монга место не высвобождает при .remove() ?
 
09:39
При тестировании ивента, если VRF отсутствует, то мне выдает "vrf: None"
 
09:39
ovg: нет
09:40
но есть compact для базы и для коллекций
09:40
в принципе, она потом положит в свободное место новый объект
 
09:41
Вопрпос, как будет работать FM, если прийдет переменная со значением None, но в правиле переменная описана как "int" или "ip_address"
 
09:41
dvolodin в принципе да, но копировать удаленную хрень мне не хоцца :)
 
09:43
из дампа она уйдет
09:43
Dmitry1: посмотреть надо, по идее не должно создавать переменной вообще
 
09:45
делай issue
09:45
надо будет классификатор поправить
09:45
отфильтровывать пустые группы
 
09:46
Т.е. до попытки сделать им "int" или "ip_address" просто проверить их на None
 
09:47
в классификаторе отфитровывать пустые группы
10:11
 
10:12
нет
10:13
вот тебе что выдает d-link
10:13
DGS-3627G:admin#show ddm ports 1 status
10:13
Command: show ddm ports 1 status
10:13
 Port    Temperature   Voltage    Bias Current   TX Power     RX Power
10:13
        (in Celsius)     (V)         (mA)         (mW)         (mW)
10:13
------- ------------- ---------- -------------- ---------- ------------
10:13
  1        -            -            -            -            -
10:13
DGS-3627G:admin#show ddm ports 1 configuration
10:13
Command: show ddm ports 1 configuration
10:13
Port:            1
10:13
--------------------------------------------
10:13
DDM state : Enabled
10:13
Shutdown  : Alarm
10:13
Threshold       Temperature    Voltage   Bias-Current   TX-Power  RX-Power
10:13
               (in Celsius)      (V)        (mA)         (mW)      (mW)         ------------ --------------- ---------- -------------- ---------- ---------
10:13
High Alarm         -             -            -            -         -
10:13
Low Alarm          -             -            -            -         -
10:13
High Warning       -             -            -            -         -
10:13
Low Warning        -             -            -            -         -
10:13
A means that the threshold is administratively configured.
10:13
DGS-3627G:admin#
10:14
Т.е. добавить туда еще 4 таких массива, где будет показываться конфигурация
 
10:17
а что такое "current_ma" ?
 
10:48
Нужно для того, чтобы посмотреть, если произошел "Аларм", то как был настроен DDM и насколько больше или, наоборот, меньше значение чем граничное.
10:48
По идее, потом для SA можно будет красивую формочку нарисовать для этого
10:51
Так же, и для меди. Выделять цветом проблемные значения.
10:54
Для циски, кстати, тоже такое есть.
10:54
                            High Alarm  High Warn  Low Warn   Low Alarm
10:54
        Temperature         Threshold   Threshold  Threshold  Threshold
10:54
Port     (Celsius)          (Celsius)   (Celsius)  (Celsius)  (Celsius)
10:54
------- ------------------  ----------  ---------  ---------  ---------
10:54
Te3/1     40.6                70.0        67.0         2.0        0.0
10:54
Te3/2     29.3                75.0        70.0         0.0       -5.0
10:54
Te3/3     41.1                70.0        67.0         2.0        0.0
10:54
Te4/1     34.6                70.0        67.0         2.0        0.0
10:54
Te4/2     31.7                70.0        67.0         2.0        0.0
10:56
Поглядев на эти значения мы видим, что в порту Te2/2 стоит какой-то супер-пупер ксенпак.
 
11:56
я думаю диапазоны отдельным вызовом лучше драть
 
12:04
возможно. но выводить их надо на одной странице
12:05
для наглядности
 
12:11
 мы пока про вывод не говорим вообще
 
12:12
Т.е. я вижу html страничку так: 1 строка - high alarm, вторая строка - high warning, 3 строка - текущие значения, 4 строка - low warning, 5 строка = low alarm
12:12
Для скриптов, опять же, которые будут запускаться по переодичности. Надо стравнивать получаемые значения с чем-то.
12:13
И в зависимости от этого генерировать какие-то события.
12:13
В том примере что я привел.
12:13
Какой смысл мне получить значение температуры -2
12:14
Если для одного ксенпака это критичное, а для другого нет ?
12:14
Где в таком случае брать критичные значения? В инвентори?
 
12:26
регламентные возьмешь
 
12:29
как? Откуда я знаю, какие регламентные значения на ксенпаке, если он от меня на 100 километров находится?
 
12:30
 <dvolodin> с аутентификацией в монге все в порядке?
12:30
а как проверить?
 
12:30
А в табличке
12:30
e3/1     40.6                70.0        67.0         2.0        0.0
12:30
e3/2     29.3                75.0        70.0         0.0       -5.0
 
12:31
команды типа db.noc.events.active.count() отрабатывают нормально
 
12:31
я вижу, что на Te3/1 регламентное значение 0.0, а на Te3/2 - -5.0
 
12:31
Дим, на тип трансивера делаешь регламентные значения
12:31
и не паришься
 
12:32
Я еще раз повторюсь. Я абсолютно без понятия, какой там тип трансивера.
 
12:32
а вот это в  inventory
 
12:32
Мне нужно, чтобы офисный криведко тывнул мышкой, и увидел, что значение выходит за пределы нормы
 
12:33
db.noc.mibdata.find() начинает выводить данные, а потом стреляется с сообщением "Wed Dec 28 16:32:02 mongo got signal 11 (Segmentation fault), stack trace: ........."
 
12:33
Хорошо. А в инвентори эти значения как попадут? Вбивать руками не предлагать.
 
12:33
чот меня вот этот "Segmentation fault" смущает
 
12:56
dvolodin, это что-то новенькое "'CLITelnetSocket' object has no attribute 'local_address'
 
    Share this page
    Share this page: