About Forum Blogs NOC Docs Downloads KB Issues Code CI Registration

nocproject.org

#nocproject.org at irc.freenode.net log.
Back to nocproject.org Back to IRC log index
Date: 27.12.2011
lexus-omsk #
02:47
приветствую!
02:47
dvolodin: напомни, пожалуйста, как правильно передать параметр address в debug-script?
02:47
я запустался в кавычках или что там ещё надо... хотя раньше как-то делал
dvolodin #
02:59
address='"x.x.x.x"'
03:32
пролечил неостанавливающийся noc-launcher
03:33
не тот PID писался в файл
freeseacher #
05:29
dvolodin, Дима давай теги добъем :)
dvolodin #
05:32
давай добьем, что с ними не так осталось?
freeseacher #
05:34
они не работают :)
05:34
но теперь возвращается коррктный код 404. хотя тег есть
05:35
я прям вижу как народ вводит теги, но подсказка не срабатывает ибо всегда 404
dvolodin #
05:35
404 все лучше, чем 500 Ж)
freeseacher #
05:35
это само сабой :)
dvolodin #
05:35
регистр отличается?
freeseacher #
05:35
нет
dvolodin #
05:36
то есть тупо не ищет?
freeseacher #
05:36
ага
05:36
тупо всегда 404
dvolodin #
05:40
собрал Mapnik2, играюсь с GIS
05:57
в общих чертах понятно, как оно будет выглядеть
zi_nnov #
06:02
то есть карта будет из ОСМ? а сеть на этой карте отдельным слоем и храниться будет в ноке? я правильно понимаю
dvolodin #
06:27
карта произвольная, в том числе и из OSM
06:29
Может быть, вообще дуриком удастся mapnik впихнуть в noc-web
zi_nnov #
06:53
а что это даст?
dvolodin #
06:56
отсутсвие ненужного геморроя с отдельными демонами
06:56
будет noc-web тайлы отдавать и кешировать
e_zombie #
07:34
пытаюсь запустить принудительно sa.version_inventory но в логи вообще ничего не попадает
07:34
такое ощущение что чтото в системе поломалось
dvolodin #
07:43
из CLI?
e_zombie #
07:46
lf
07:46
да
07:47
плюс если проходит по таймеру - задача не выполняется
08:00
к сожалению я не могу сказать произошло это у меня после обновления или после того как я пересоздавал кучу хостов
dvolodin #
08:05
sae живой?
08:05
и активатор?
e_zombie #
08:06
а вот бревна то я и не заметил
08:08
кхм.
08:13
удалил все логи. перезапустил. вроде запустилось.
08:13
возможно лог ротатор не отрабатывал
Dmitry1 #
08:57
Предложение: Сделать отдельный класс FM "Vendor | Cisco | IOS | ASIC", и туда классифицировать все события, связанные с ASIC
dvolodin #
09:03
какие именно?
wad #
09:09
а что такое ASIC
Dmitry1 #
09:09
%EARL_L3_ASIC-SP-3-INTR_WARN: EARL L3 ASIC: Non-fatal interrupt Netflow interrupt
09:10
Я ума не приложу, какой класс нужен для этого ивента
09:11
Я так подозреваю, что для каждого ASIC свои какие-то специфичные сообщения об ошибках.
09:12
wad: http://nag.ru/articles/reviews/15583/asic-kak-mnogo-v-etom-zvuke.html
dvolodin #
09:13
Я думаю можно сделать классы
09:13
Hardware Failure
09:13
и Hardware Warning
09:14
и вообще все %EARL_L\d+_ASIC-SP-\d+-INTR_WARN: в warning'и класть
Dmitry1 #
09:17
Наверное так и сделаем. Типа два общих класса, а там уже пусть разбираются, что за ошибка. На все случаи жизни все равно не сможем предусмотреть.
dvolodin #
09:19
ну да
09:19
сообщение видно будет - пусть разбираются
09:20
только правилам надо preference задрать на сотню
09:20
чтобы, если понадобится, иметь возможность более специфичные классы делать
Dmitry1 #
09:31
А как бы обозвать класс, который бы говорил, что какие-то железные проблемы с портом (GBIC, Flap, Link и т.п.)
09:31
Например
09:32
%PM_SCP-SP-3-GBIC_BAD: GBIC integrity check on port 1/2 failed: bad key
09:33
%PM-4-ERR_DISABLE: link-flap error detected on Te1/6, putting Te1/6 in err-disable state
09:34
%Fiber-I-SFP-PRESENT-CHNG: 1:24 SFP status is present.
09:34
%Box-I-SFP-PRESENT-CHNG: unit_id 1 SFP 0 status is not present.
dvolodin #
10:34
http://dpaste.com/678246/
10:34
вот, мегафича
10:34
теперь можно настраивать MRT для внешних систем и дергать их по HTTP
freeseacher #
11:05
dvolodin, а результаты хранятся?
11:05
тоесть запросил данные.
11:05
не хочешь ждать прогреса.
11:06
запросил через час
11:06
данные уже есть. но вот сколько проживут ?
dvolodin #
11:19
до main.cleanup
11:20
MRT по любому хранит данные до запроса
freeseacher #
11:20
ага
11:20
это уже в транке ?
dvolodin #
11:21
тестирую пока
11:21
там достаточно разумная штука
11:21
сначала конфигурируются MRT, которые можно выполнять конкретному юзеру
11:21
точнее, не юзеру, блин
11:22
name = nosql.StringField(unique=True)
11:22
is_active = nosql.BooleanField(default=True)
11:22
description = nosql.StringField(required=False)
11:22
permission_name = nosql.StringField(required=True)
11:22
selector = nosql.ForeignKeyField(ManagedObjectSelector, required=True)
11:22
reduce_pyrule = nosql.ForeignKeyField(PyRule, required=True)
11:22
map_script = nosql.StringField(required=True)
11:22
timeout = nosql.IntField(required=False)
11:22
вот такая табличка
11:22
можно задать дополнительное право на запуск этой MRT
freeseacher #
11:22
MRT != snippet
dvolodin #
11:22
{ "_id" : ObjectId("4ef9957d5a20903303000000"), "name" : "get_version", "reduce_pyrule" : 10, "is_active" : true, "selector" : 1, "permission_name" : "get_version", "map_script" : "get_version" }
11:22
нет
freeseacher #
11:22
?
dvolodin #
11:23
точнее -- сниппет -- это частный случай MRT :)
freeseacher #
11:24
ну тоесть снипет можно вызвать так же ?
dvolodin #
11:25
для сниппетов можно сделать аналогичный интерфейс
11:25
или доработать конфигурацию MRT и сделать ссылку на сниппет
freeseacher #
11:27
для get_config там будет конфиг ?
dvolodin #
11:27
тогда да, можно будет делать в CRM кнопки типа "дернуть порт"
11:27
конфиг ты сам пишешь
freeseacher #
11:27
нет нет
dvolodin #
11:27
если тебе надо вытаскивать конфиги через REST
11:27
ты конфигурируешь MRT под скрипт get_config
freeseacher #
11:28
если дергать get_config в результате будет что ?
dvolodin #
11:28
на выходе получишь json с твоим конфигом
freeseacher #
11:29
ок. видимо я не вкурил что есть MRT
11:29
мап редюс
11:29
то что в ноке в tasks
dvolodin #
11:29
да
11:30
только в tasks -- ты видишь специальные приложения, которые используют MRT
11:30
сбор конфигов - это тоже MRT
11:30
и interface discovery
freeseacher #
11:31
неа
11:31
все равно непонимаю
dvolodin #
11:32
MRT состоит из 3 вещей
11:33
селектора или списка объектов
11:33
скрипта, который выполняется на всех этих объектах
11:33
и reduce script'а, который аггрегирует результат выполнения всех скриптов и проводит финальную обработку результата
11:34
первый пример -- сбор конфигов
11:34
берем список железок, скрипт get_config, а reduce у нас укладывает все в репо
11:35
version inventory: запускаем get_version, reduce форматирует результат в виде HTML-таблицы
freeseacher #
11:35
ага
11:36
для гетвершин понянно
dvolodin #
11:36
сниппеты так работают -- для каждой железки разворачивается шаблон, результат скармливается commands
freeseacher #
11:36
а как эта идеология подходит для любой другой задачи ?
dvolodin #
11:36
если пускаем через web -- reduce форматирует результат в виде таблицы
11:36
ну вот типовая задача
11:36
постановка
11:37
"хочу, чтобы в карточке клиента в CRM была кнопка -- проверить MAC"
11:37
считаем, что в CRM на договоре клиента хранится свич, к которому он подключен и его MAC
11:37
детали не важны в общем-то
11:38
сначала нам нужен web-сервис, который обработает запрос из CRM
11:38
конфигурим его, обзываем user_mac
11:38
то есть доступен он будет по /sa/mrt/user_mac/
11:39
в качестве скрипта прописываем get_mac_address_table
11:39
например, CRM от нас хочет имя порта, где мы видим этот мак, или прочерк
11:39
делаем pyrule
11:40
который обработает результат задачи и сформатирует строку
11:40
вашаем это в конфиг все
11:40
в качестве селектора - указываем все свичи доступа
11:40
задаем permission - user_max
11:40
_mac
11:41
и все
11:41
получаем сервис, который проверяет мак на заданном свиче
11:41
дальше CRM делает post
11:42
и ломится по URL, полученному в поле location пока не получит ready: true
11:42
порт или прочерк получит из поля result
11:43
и в том же духе дальше
11:43
хочешь сделать кнопку - дернуть порт
11:43
конфигуришь task, он получает свой url
11:43
кормишь свич и порт ему, он дергает порт
11:46
или, например, стоит BRAS из 7201 и все юзеры прописаны на нем локально ;)
11:47
делаешь сервис subscribe и unsubscribe
freeseacher #
11:53
ага ну более менее
dvolodin #
11:54
вырожденный случай MRT - запустить скрипт на одной железке и отдать результат как есть
Dmitry1 #
14:31
Наконец-то выпусили релиз mpd-5.6
Yetty #
14:37
чот при апдейте на синхронизации мибов вываливается трейсбек
14:37
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
14:38
это с залитыми ранее мибами конфликт или сбой движка синк-мибов?
Tweet
Share this page
Share this page: Tweet