nocproject.org
06:15
zi_rus: а ты еще в Москве?
06:15
:)
06:18
а как отдебажить авторизацию по лдап?
06:22
на циске c2921 ошибка в get_switchport
06:22
06:26
dvolodin: не, две недели как вернулся
06:26
сеть запущена и работает
06:27
пользуйтесь
06:27
это вы пользуйтесь, мачты вам смонтированы, каналы организованы ;)
06:28
хотя посмотрим, мегафон в послежднее время упал ниже плинтуса
06:28
остальные двое - не лучше
06:29
ну мы то пользуемся чтобы вы пользовались
06:51
лдап авторизаци использует кто-нибудь?
07:33
e_zombie: какие ногти грязные!
07:33
:) такжешь без фотошопа жеж. там ещё волосков море
07:33
времени брить её не было
07:40
тоесть тебе не понравилась фотка ?
07:40
e_zombie: а как же стремление с идеалу, ради искусства
07:41
не за всем удаётся проследить. вот в следующий раз буду следить за ногтями. опыт сын ошибок трудных
07:50
а готовые метрики для CPU Load у нас есть?
07:54
yum install python-devel
07:55
не туда :)
08:10
filonov: наверное нет, даже у одного вендора в одном профиле на разных железках это могут быть разные оиды
08:10
если запилишь
08:11
у длинка заебётесь
08:11
но делать надо...
08:11
длинк пофиг меня больше циска интересует
08:11
у ASR9k есть отдельный цпу на каждой линейной карте
08:11
а делать всё одно придётся общее решение
08:11
Зайдем с другой стороны - есть Custom | SNMP | OID
08:11
и как указать собственно OID
08:12
собсно берешь и указываешь
08:12
там все очевидно
08:12
было б очевидно - я б не спрашивал
08:12
freeseacher: конфлю умеет темплейты? (как в mediawiki)
08:16
так ldap завел на сентос, но обнаружил баг. не удалятся пользователи
08:16
авторизацию
08:17
openldap или 389 ds?
08:18
обнаружил баг - вешай внятный issue в bt
08:19
пользователи в ноке н удаляются
08:19
это дистр такой
08:19
на основе сентоса
08:19
чего?
08:19
мадрака была, конечно, на основе шапки, но они разбежались в начале нулевых
08:20
да, но есть роса линукс
08:20
бгг
08:20
и Денис Корявов, лол
08:20
да так, один из собирателей росы
08:21
эпичные ошибки делал при пакетировании
08:21
впрочем, я за ними не слежу, всё могло измениться в лучшую сторону
08:21
zi_rus: я про Metric Sets а не про Metric Config
08:24
а на кб можно авторизоваться через гугл аккаунт? или надо регатся обязательно?
08:25
регайся
08:26
zi_rus: а ты графану хорошо изучил? всякие там авто-дашборды
08:26
ну и вообще изменение дашборда (скриптом)
08:27
а то, понимаете ли, хочется, но вникать не желаем-с.-)
08:27
а где собственно регистрация?
08:28
evyscr: там вроде были шаблонные дашборды
08:28
но в детали я пока не вникал
08:28
я вообще хочу автодобавление графика в row при появлении метрики
08:28
(я про errors на порту)
08:30
evyscr: не, и уже год не имею делов с графаной
08:30
хотя надо бы
08:31
регаться надо на bitbucket?
08:34
И таки кто подскажет - как настроить Custom SNMP Oid в MetricSet?
08:36
dvolodin: И таки кто подскажет - как настроить Custom SNMP Oid в MetricSet?
08:40
dvolodin: а почему в скрипте пишет что делает несколько подсоединений по ssh??
08:40
[Cisco.IOS.get_switchport] [192.168.222.1] [ssh] Connecting
08:40
[Cisco.IOS.get_portchannel] [192.168.222.1] [ssh] Connecting
08:47
teroni804: nice catch
08:47
пинай, пока не исправят
08:55
с Custom SNMP Oid я долго боролся, но так и не победил. правда это было в стабильной ветке, а не в develop, но думаю там мало что изменилось в этой части.
08:55
метрика приходила от железки, но на одном из этапов обнулялась
08:56
уже в самом ноке
08:56
хех
08:56
"стабильная ветка нока" - оксюморон
08:57
а что значит "обнулялась"?
08:57
значение в ноль или ещё что?
08:57
да, значение в ноль
08:57
сейчас не помню точно между какими модулями
08:58
но на входе метрика ловила значение в 56, писала об этом логи, а в следующем логе было видно как для нее же выставлено значение 0
08:59
kokozzi: а это точно был Metric Set?
08:59
в Metric Set добавлял метрику Custom | SNMP | OID
09:01
kokozzi: и куда там ввести OID?
09:02
OID я в Metric Config вводил
09:03
Metric Config - это совсем другое. ТОгда понятно почему оно у тебя обнулялось
09:04
значит я не особо понял механику работы всего этого
09:06
если в Metric Set можно добавить Custom | SNMP | OID, но он не связан с Metric Config - то я вообще не вижу способов скормить ему OID
09:06
kokozzi: о том и речь
09:06
и собственно зачем тогда нужен Metric Config?
09:07
kokozzi: для одиночных метрик не привязанных к объектам
09:08
окей, но это не объясняет обнуление значений
09:10
объясняет. Для Set-а нет источника данных - получаем нули
09:12
в итоге - баг или фича?
09:13
скорее баг с недофичей
09:19
раз заговорили про PM - никто не сталкивался с проблемой, что у свичей Cisco с интерфейсов не собираются ошибки? load при этом собирается
09:19
а значения ненулевые?
09:22
нулевые
09:23
но для роутеров нули показывает в графиках
09:24
а для свичей в графане даже нельзя выбрать пункт errors
09:25
ноковская осоюенность: пока нули - метрика не создаётся
09:28
да, это багофича
09:28
это бага, но с полезным эффектом
09:28
так что решили не чинить
09:29
интересная особенность, спасибо за информацию
09:33
zi_rus: это фича, пока не начинаешь делать дашборд
09:33
и вот тогда фича превращается в багу
09:33
извиняюсь, что встреваю, давно не смотрел, что там менялось в PM
09:33
оно до сих пор оторвано от SA ?
09:35
в смысле того, чт одля разных моделей железки могут быть разные OID, а определить железку может только скрипт SA get_version
09:35
evyscr: да, я тоже с этим столкнулся, поэтому и начали разбираться. но посмотри на другую сторону, нахуа забивать базу нулями
09:35
Dmitry1: с этим все пучком, отлько зависимость оида от железки никто не использовал, но dvolodin что можно
09:37
ага
09:37
т.е. длинки идут в топку
09:37
для меня PM попрежнему бесполезен
09:39
ну если ты приложишь немного усилий и запилишь, то все у тебя будет
09:39
что запилить ?
09:39
1000 custom probes ?
09:39
dvolodin: что ему запилить?
09:39
по десятку на каждую модель длинка ?
09:39
если длинк такое говно, то да
09:40
нок тут не поможет
09:40
тебе уже ничто не поможет
09:40
у нас есть SA, который знает, для какой модели длинка что нужно делать
09:40
и есть совершенно оторванный от реалий PM, который собирает данные со справочника стеля
09:40
Dmitry1: он не просто знает, а ты сам лично хурил эти профили чтобы он знал
09:41
и с РМ тоже самое
09:41
захуяришь оиды и он тоже будет знать
09:42
root@noc:/usr/local/noc/fm/collections/mibs/DLink # ls | wc -w
09:42
117
09:42
und?
09:42
да, жопа
09:42
эта жопа называется длинк
09:43
root@noc:/usr/local/noc/fm/collections/mibs/Cisco # ls | wc -w
09:43
58
09:43
эта жопа называется циско ?
09:44
знаешь, у циски на cpu load явно меньше oid'ов
09:44
на порядки, я бы сказал
09:44
хорошо, специально для тебя
09:45
root@noc:/usr/local/noc/fm/collections/mibs/Cisco # ls | grep OLD | wc -w
09:45
4
09:45
навскидку
09:45
и что?
09:45
длинк от этого лучше не становится
09:46
а то, что стандартные пробы для этиз моделей циско (а список этих моделей знает только SA) идут лесом
09:48
стандартные пробы используют стандартные оиды, то что они на циске работают означает лишь то что циска следует стандарту
09:48
да прочитай, что я выше написал
09:48
лол, ты написал то, что сам не понял
09:49
загляни в OLD-CISCO-INTERFACES-MIB.mib
09:49
стандартные - это имеено ifmib'овские
09:49
и посмотри, какой там стандарт
09:49
всё остальное (в данном скопе) - отклонения от стандарта
09:50
SA как-то с этим разбирается
09:50
хреново, если честно
09:50
в нем можно сделать, что если такая-то модель с таким-то IOS - то дергать такой-то OID
09:51
как это можно сделать в пробе PM ?
09:52
только что выше был разговор, что на определенных моделях циско errors сидят в другом OID
09:53
ты упарываешься на ненужную тему
09:53
мне очень нравился NOC, ровно до версии 0.6.4
09:53
и говорить про привязку к sa в этом вопросе - глупо
09:54
после этого с него сделали монстра, который ломится на железки, просто так, ничего от них не получая
09:54
ну нету у меня такого OID, а NOC будет раз за разом долбить железку
09:55
Добрый день. У меня используется CISCO WLC 2504 какой профиль надо выбрать, чтобы железка бэкапилась по ssh? CISCO.IOS не подходит, как и CISCO.AireOS
10:03
Кстати, по длинкам
10:04
у меня есть еще и циски, и джунипер
10:04
и тоже, пришлось с них снимать калочку "is managed", потому как NOC ведет себя абсолютно неадекватно
10:09
а управлять его поведением невозможно
10:12
мне тут вероятно могут навесить задачу управления и мониторингом пару тысячами свичей
10:12
подскажите, пожалуйста, есть ли более менее вменяемая альтернатива NOC ?
10:13
nagios рассматривал, но не подходит
10:17
пока присматриваюсь к d-view
10:21
dkul: писать свой.
10:21
если ни один не подходит .
10:21
а из-за чего interface discovery может становиться Suspend?
10:21
крешится .
10:22
дебаг проходит ?
10:23
Крешей нет, дебаг проходит.
10:24
самое странное что version inventory тоже Suspend. При том что там жестко вовзращаемые константы которые крешится не могут в принципе1
10:28
Я попробовал нарисовать Fake-профиль который гонит во всем кроме интерфейсов по SNMP
10:31
filonov: caps discovery?
10:32
вроде как остальные уже от него зависят
10:32
Dmitry1: попробуй zenoss
10:33
но у меня неадекватного поведения в последнее время практически не видать
10:33
evyscr: как раз caps вполне отрабатывает
10:33
зенос опен сорс не очень
10:34
хотя я смотрел его в году 2006-ом
10:35
у меня один знакомый заюзал где-то в районе 2010
10:35
я сам не вникал
10:35
кстати народ, немного в сторону вопрос, тут один товарищ прямо лестно отзывался об initi
10:36
evyscr: у тебя не видать неадекватного поведения потому что ты наверно не пытаешься использовать ssh на говнодлинках у которых проца даже на пинги не всегда хватает
10:36
там FM или тупая пинговалка ?
10:36
filonov: ну, не надо наступать на любимую мозоль Димы
10:36
да причем здесь длинки ?
10:36
у меня 6509 каталист
10:37
там типа как универсальное решение медиации для консолидации разрозненных и неструктурированных систем
10:37
повесь багу на то, что ты считаешь неадекватным поведением
10:37
c с десяток физических серверов видятся как один логический
10:37
silver1: нихерасебефамилия
10:38
вполне штатная фича, даже для ентерпрайза, как любит Дима
10:38
по сути прослойка для работы с тем, что не snmp, как с snmp
10:38
по определенным причинам, для серверов установлено разное количество максимальных попыток соединений
10:38
вот вопрос, просто мб кто тыкал?
10:39
мне нужно, чтобы FM поднимал аларм для опеределенных сообщений, и давил длядругих
10:40
у меня весь лог забит таким:
10:40
861682: Oct 27 16:52:21.105 EEST: %SLB-6-REAL: Real 10.117.0.15 (VPNFARM) has changed state to MAXCONNS
10:40
861683: Oct 27 16:52:22.001 EEST: %SLB-6-REAL: Real 10.117.0.15 (VPNFARM) has changed state to OPERATIONAL
10:40
861684: Oct 27 16:52:24.797 EEST: %SLB-6-REAL: Real 10.117.0.15 (VPNFARM) has changed state to MAXCONNS
10:40
861685: Oct 27 16:52:31.001 EEST: %SLB-6-REAL: Real 10.117.0.15 (VPNFARM) has changed state to OPERATIONAL
10:40
это нормальное поведение
10:40
а вот если появится надпись %SLB-6-REAL: Real 10.117.0.8 (VPNFARM) has changed state to MAXCONNS
10:40
то нужно поднимать аларм
10:40
еще немного попахивает троль вопросом, но все же, а кто как смотрит на уменьшение функционала нока?
10:40
Dmitry1: блджад, назови уже bug number
10:40
как мне это сделать в текущем FM ?
10:41
Dmitry1: прислать патч
10:41
без bugno тебя не интересует решение
10:41
смотрю просто его сорцы, и омг, очень тяжело, куча зависимостей, велосипедов и проч
10:42
silver1: ты смотри миросервисы. девелопу осталось жить в таком виде два месяца
10:42
silver1: dvolodin уменьшает число зависимостей, но при этом добавляет в два раза больше новых
10:42
evyscr: какой такой баг ?
10:42
о, решение не интересно.
10:42
баг давно известный в classificationrules все поведение FM прибито гвоздями двухсотками
10:42
я смотрю микросервисы, омг, у меня глаза выкалываются как с ansible извращаются
10:43
bug no
10:43
номер, сестра, номер
10:43
silver1: самое время поучаствовать в этой вакханалии
10:44
e_zombie: а как быть не-метросексуалам?
10:44
нене, я пас. идея в том, чтобы прирезать скажем так 70-80% функционала нока, оставив норм кодовую базу
10:44
evyscr: задраить люк в танке на два месяца.
10:45
e_zombie: дык, я давно
10:45
silver1: в теории можно это пробовать сделать после сливания веток.
10:45
evyscr: нету номера. есть проблема, о которой все знают. проблема называется - невозможно управлять поведением FM
10:45
evyscr1: почему? мб вообще в новый проект выльется конечно
10:46
Dmitry1: нет бага - нет проблемы
10:46
Dmitry1: это из-за работы job'ов но там да - адский замес внутри)
10:46
silver1: а что именно ты бы прирезал?
10:47
какие нахер джобы ? вы код смотрели ?
10:48
filonov: я вот и спрашиваю у вас, что прирезать, потому что я по сути прогер а не сетевик, мне вообще все равно что прирезать
10:48
silver1: прирежь extjs
10:48
if a.alarm_class.id in self.handlers:
10:48
for h in self.handlers[a.alarm_class.id]:
10:48
try:
10:48
h(a)
10:48
except:
10:48
error_report()
10:48
Dmitry1: да, там классы алармов дублируются тупо один в один
10:48
if r.alarm_class.id in self.triggers:
10:48
for t in self.triggers[r.alarm_class.id]:
10:48
try:
10:48
t.call(a)
10:48
except:
10:48
error_report()
10:49
найдите два различия
10:49
Dmitry1: там не только такого много, просто любое место можно открыть и придраться
10:50
silver1: ты не в теме
10:50
а про то, что у нас сейчас есть следующие сущности: handlers, jobs, solutions, pyrule, actions
10:51
evyscr: extjs не правильно приготовлен, на манер еще 3 версии, там все в куче просто
10:51
раньше хватало только pyrule, и управлять ими можно было через триггеры
10:51
сейчас добавились еще 4 сущности
10:51
которые такие-же, но с перламутровыми пуговицами
10:52
никто не знает, что они делают, никто, кроме Димы в них н еразбирается
10:52
запускаются они когда хотят и делают что хотят
10:52
Dmitry1: собственно я это и имел ввиду, когда писал про джобы, но 1 предложением не передать весь замес
10:52
управлять ими не возможно
10:53
silver1: ежели ты поправишь баги с extjs - народ тебе проставится
10:53
evyscr: какой баг? белый квадрат?
10:55
у меня такой вопрос, я правильно понимаю, что в ноке норм функционал? но нет одного механизма обработки задач?
10:55
особенно мне нравится вот это:
10:55
потом след, нужны ли модули inventory и например configuration management?
10:55
693 2015-11-03 01:02:24 INFO(6) Safeguard Engine enters NORMAL mode
10:55
1692 2015-11-03 01:00:37 INFO(6) SNMP request received from 10.116.0.211 with i
10:55
nvalid community string!
10:55
1691 2015-11-03 01:00:35 INFO(6) Logout through SSH (Username: mitya,IP: 10.116
10:55
.0.211)
10:55
1690 2015-11-03 01:00:34 WARN(4) Safeguard Engine enters EXHAUSTED mode
10:55
1689 2015-11-03 01:00:10 INFO(6) Successful login through SSH (Username: mitya,
10:55
IP: 10.116.0.211)
10:56
что NOC забыл в час ночи на свиче ?
10:57
Что он пытается получить от свича по SNMP, если в MO не прописан ни source_ip ни community ?
10:57
скучно
10:57
ну он сообщение по сислогу не ловил?
10:57
от safaguard
10:57
нет
10:57
safeguard сработал, когда загрузка процессора достигла 90%
10:57
я хз, я давно выключил всё, кроме сбора конфигов
10:58
я и сбор конфига выключил
10:58
Dmitry1: он пытается получить ровно то, что ты сконфигурил. А почему у тебя проц кончается - тебе известно
10:59
представь себе ситуацию, настраиваешь ты свич удаленно, время от времени делаешь "сохранить конфиг", потому как связь нестабильная
10:59
NOC по FM порлучает "config changed" и радостно начинает ломиться на этот же свич
11:00
в резвльтате тебя выкидывает со свича, загрузка процессора 100% - начальство ебет тебя в жопу
11:00
что тут правильного ?
11:01
нафига такая автоматизация нужна ?
11:01
те кто ходит на говнодлинки по ssh - должны страдать. Тут всеправильно
11:01
причем здесть длинк ?
11:02
у меня на столе 4 штуки allied telesyn
11:02
не хочешь получать конфиги - отключи..
11:02
в отличие от длинков они виснут наглухо, и помогает только аппаратная перезагрузка
11:03
Если ты не понимаешь какая связь между загрузкой проца и SSH - начальство все делает правильно
11:03
я хочу, чтобы NOC заходил на устройства когда мне нужно, а не когда ему захочется ?
11:04
отключи трап на изменения конфига и будет тебе счастье
11:05
отключить трап на падение порта
11:06
отключить трап на reboot, start
11:06
вопрос - а нафига мне тогда такой FM ?
11:06
Dmitry1: а FM к твоих проблемах не имеет ни малейшего отношения
11:07
а нафига мне FM без трапов?
11:07
filonov: как мне отключить это:
11:07
"handlers": [
11:07
"noc.fm.handlers.event.audit.log_started",
11:07
"noc.fm.handlers.event.discovery.schedule_discovery"
11:07
],
11:08
"handlers": [
11:08
"noc.fm.handlers.event.audit.log_reboot",
11:08
"noc.fm.handlers.event.discovery.schedule_discovery"
11:08
],
11:08
Dmitry1: в РМ это можно сделать. чтобы с длинка дергались другие оиды, я dvolodin проел всю плеш про это, он сказал что можно
11:08
"handlers": [
11:08
"noc.fm.handlers.event.link.oper_down"
11:08
],
11:08
почитай в irc log
11:08
он даже применры приводил
11:10
декораторы видимо
11:10
надо использовать
11:12
гм. Нок подумал и version_discovery разсуспендил. Теперь бы интерфейсы того
11:12
народ, такой вопрос, допустим мы прирезаем job, actioan pyrule и проч и сводим в один механизм, в итоге у нас нах отлетает работа вообще всех модулей. И надо модули нацепить на новый единый механизим
11:13
какие модули цеплять в первую очередь?
11:13
потому что жизнь ограничена к сожалению
11:13
SA - самый главный модуль NOC
11:13
только он знает, какие возможности у какой железки
11:14
а не PM
11:14
root@noc:/usr/local/noc/pm/probes # ls
11:14
Cisco __init__.pyc base.pyc generic match.pyc
11:14
__init__.py base.py db match.py test
11:14
Вот как раз его и надо переделывать в первую очередь
11:15
где гвоздями прибиты какие-то куски от Cisco
11:15
ты про чтобы он ходил по telnet/ssh , получал интерфейсы, и проч инфу?
11:15
что в PM делают пробы от Циски ?
11:15
silver1: нет, глянь тот же профиль длинка
11:16
где в L2 свичах не пытается искаться информация про PIM, BGP, OSPF и т.п.
11:17
вроде была здравая идея про cfpfbilities
11:17
понял, надо сделать так, чтобы нок не лез на эти железки за этой инфой? (PIM, BGP, OSPF)
11:18
не только
11:18
(13:11:30) Dmitry: root@noc:/usr/local/noc/pm/probes # ls
11:18
(13:11:30) Dmitry: Cisco __init__.pyc base.pyc generic match.pyc
11:18
(13:11:30) Dmitry: __init__.py base.py db match.py test
11:18
root@noc:/usr/local/noc/pm/probes/Cisco/IOS # ls
11:18
__init__.py __init__.pyc bras.py bras.pyc
11:19
у нас получается, что все циски 100% выступают в роли BRAS
11:20
кстати, в профиле MO есть такая замечательная вещь, как аттрибуты, куда можно положить информацию, которую потом будет использовать PM, FM, Inventory и т.п.
11:20
Но Дима для каждого модуля NOC пишет свой собственный, уникальный механизм, не совместимый с другими модулями
11:21
Так для Probe у нас появились Actions, для FM - handlers, для inventory - jobs и solutions
11:22
я по этому поводу приводил хорошиц пример
11:23
вот кусок кода:
11:23
/* First check our stat list for known short names */
11:23
for (k = 0; k < NUM_STAT_PROTOCOLS; k++) {
11:23
if (proto == statProtos[k].proto)
11:23
return(statProtos[k].name);
11:23
}
11:23
/* Now look in list of all defined protocols */
11:23
key.proto = proto;
11:23
if ((pn = bsearch(&key, protoNames,
11:23
NUM_PROTO_NAMES, sizeof(*pn), ProtoNameCmp)) != NULL)
11:23
return(pn->name);
11:23
silver1: я бы начал с переделки иерархии классов. Дабы можно было плодить сущности для очень похожих моделей с немного разными фичами
11:24
в первом цикле тупо идет сравнение, а во втором - автор решил показать, насколько он крутой
11:25
так вот, разных мест в NOC, где автор показывает, насколько он крутой - полно
11:25
к сожалению, потом никто не может разобраться, что эти места делают
11:26
соответсвенно - разработчиков, которые могут чем-то помочь автору - 0
11:27
попытки воззвать к здравому смыслу оканчиваются неудачей
11:28
мне кажется, таких мест очень много
11:28
система должна быть дубовее, как по мне
11:29
простейший пример
11:29
раньше, чтобы добавить/изменить правило FM, достаточно было отредактировать текстовый файл
11:29
я уже видел, __init.py__ что может быть пустой или с портянкой
11:30
куча текстовых обращений и игр getattr setattr
11:30
сейчас же - совершить около 10 телодвижений, причем половину из них - набирая в командной строке команды длиной 100-200 символов
11:30
Я таки победил suspend. Хотя и весьма радикально
11:32
в результате - за последние года два количество изменения в правилах FM уменьшилось раз в десять
11:34
за все время существования NOC не было ни одного коммита стороннего разработчика в подсистему хандлеров, джобов и солюшенов
11:34
да, еще в пробы PM
11:35
как по мне - проект развивается в каком-то неизвестном направлении, не применимом в реальной жизни
11:36
как минимум, делается все, чтобы затруднить стороннему человеку принести пользу проекту
11:37
filonov: он еще в suspend укладывал задачи для упавших объектов
11:37
чтобы SA не трясти
11:39
dvolodin: точно в suspend а не в disable?
11:41
dvolodin: в любом случае пинговалка не работает у меня
11:42
но прикол в другом - interface_discovery все равно fail. Debug-script отрабатывает нормально. Куда смотреть?
11:42
silver1: все, что может быть отрезано, уже отрезано в микросервисах
11:43
silver1: а ты что скажешь про initi?
11:47
dvolodin: а почему в скрипте пишет что делает несколько подсоединений по ssh??
11:47
[Cisco.IOS.get_switchport] [192.168.222.1] [ssh] Connecting
11:47
[Cisco.IOS.get_portchannel] [192.168.222.1] [ssh] Connecting
11:49
teroni: потому что это разные скрипты
11:52
teroni: вот это посмотрю
11:52
не доолжно
11:52
filonov: нет, они одним коннектом пользуются
11:53
вот ситуация
11:53
сейчас нужно настроить новую железку
11:54
я вынужден спрашивать напарника, какой у нас свободный IP есть
11:54
у него стоит The Dude
11:55
наш IPAM заносит в себя что угодно, но только не IP реальных железок
11:57
Приличные люди сначала выделяют адрес в ipam, потом прописывают его на железку
11:58
приличные люди, к сожалению, обычно живут в вакууме
11:59
наверное, нужно разделить ip discovery для интерфейсов и для arp-кеша в разные виды
11:59
первый нужен почти всегда
11:59
второй - сильно зависит от условий применения
12:00
в микросервисах они как раз попадут - один в box, второй в periodic discovery
12:01
dvolodin: а как мне для циски повесить метрики на транк? а не на каждый отдельный из интерфейсов транка
12:01
вполне штатная ситуация, когда в подсети выделяется один или несколько диапазонов адресов для DHCP клиентов, а часть адресов - для оборудования
12:01
такое умеют даже китайские роутеры
12:03
Dmitry1: то, что допустимо для китайских роутеров недопустимо для сети оператора
12:04
filonov: к сожалению, то, что недопустимо, всё равно может присутствовать...
12:05
evyscr: Это уже организационная проблема а не техническая
12:07
50% Диминых проблем связаны с организационными причинами. От него они не зависят
12:07
а жить как-то приходится...
12:07
но далеко не все сценарии стоит тащить в NOC
12:08
DGS-3627G:admin#show dhcp excluded_address
12:08
Command: show dhcp excluded_address
12:08
Index Begin_Address End_Address
12:08
----- ------------ ------------
12:08
1 10.109.12.1 10.109.12.4
12:08
2 10.109.12.6 10.109.12.10
12:08
3 10.109.13.1 10.109.13.4
12:08
вообще, все сценарии надо тащить в том смысле, чтобы нок, увидев такое, не сходил с ума
12:08
4 10.109.13.6 10.109.13.10
12:08
5 10.109.14.1 10.109.14.4
12:08
6 10.109.14.6 10.109.14.10
12:08
7 10.109.15.1 10.109.15.4
12:08
8 10.109.15.7 10.109.15.10
12:08
(и в трейс не падал)
12:09
на свиче где-то 1500-2000 абонентов, подключенных по DHCP
12:09
evyscr: тогда мы погрязнем в частностях
12:09
в сетях, которые находятся в exluded - оборудование
12:09
dvolodin: нет, надо просто задачу разбить на кучу мелких
12:10
более перспективный подход -- некая базовая платформа, которая работает для 80% инсталляций
12:10
dvolodin: организационные проблемы очень плохо решаются техническими методами. Иногда - вообще не решаются.
12:10
и возможность допилки под контретные случаи для оставшихся 20%
12:10
у нас ip адреса могут собираться двумя способами - get_interface и get_arp
12:10
filonov: моя политика -- я не решаю организационные проблемы техническими методами
12:10
не лепить эти два метода в один, а дать возможность включать и выключать эти методы для каждой подсети
12:11
одно из направлений использования NOC - именно форсирование определенных административных политик на техническом уровне
12:11
и контроль за их выполнением
12:11
Dmitry1: я и говорю -- два независимых метода ip discovery
12:11
они и сейчас независимы
12:11
dvolodin: и это правильно
12:11
только ip discovery на интерфейсах включается только если включен общий ip discovery
12:12
также, два независимых метода собирания MAC адресов
12:12
который тянет get_mac
12:12
MAC'и интерфейсов и так укладваются в базу
12:12
в MAC DB они не нужны, я уже говорил почему
12:13
итого - в микросервисах я разделяю ip discovery отдельно для box, отдельно для periodic
12:13
согласен, что давно уже пора
12:13
тогда нужно завести базу macdb2, гду будет такой же поиск, как и в базе macdb, и куда будут укладываться mac адреса ecnhjqcnd
12:13
устройств
12:13
зачем
12:13
если они уже лежат в интерфейсах
12:13
:)
12:13
и эти MAC'и, кстати, анализирует discovery
12:14
lldp, например
12:14
у нас нету возможности просмотра и поиска по MAC адресу, как в таблице macdb
12:14
а что мешает ее сделать?
12:14
глобальный поиск, кстати, ищет
12:15
я же и говорю, сделат таблицу macdb2, по внешнему виду 100% совпадающую с macdb, но содержащую MAC адреса устройств
12:15
Dmitry1: а зачем тебе две одинаковых таблицы?
12:16
наоборот, мне нужна только таблица с MAC адресами устройств
12:16
dvolodin: выше отписал про инити
12:16
MAC адреса клиентского оборудования меня не интересуют
12:17
хотя две таблицы это лучше, чем одна
12:17
стандартная ситуация
12:17
мелкий провайдер на 500 абонентов
12:17
часть абонентов подключена через wifi
12:18
китайские wifi роутеры не умеют vlan, поэтому их MAC адреса в одном влане с абонентами
12:19
а иногда, как я выше приводил, еще и в одной подсети с абонентами
12:20
по статистике, если Дима хочет, чтобы NOC заводился на 80% инсталляций
12:20
то таких провайдеров на 500 абонентов в 1000 раз больше, чем крупных, типа Ростелекома
12:24
там, где я работаю, около 20 тысяч абонентов, но проблемы, с тем, что оборудование размещается в одной подсети с абонентами не исчезло
12:25
dvolodin: выпилено то будет, а вот нормально зарефакторено - нет
12:26
Dmitry1: у ростелекома абонентов больше, чем у 500 мелких операторов
12:26
silver1: почему?
12:27
dvolodin: и толку ? вот купил ростелеком сетку в каком-то городе, а там 20 тысяч абонентов на длинках
12:27
и что теперь ?
12:27
В РТ запрещено покупать сети
12:27
уже года три как
12:27
и правильно
12:28
dvolodin: пока то что вижу похоже на спагетти код, я сам занимаюсь рефакторингом, и вот прикидываю, что выкидывать
12:28
dvolodin: Дим, я не прошу все выкидывать. Я прошу только возможность управления всеми потрохами
12:29
silver1: с какой целью рефакторинг?
12:29
из-зп прибитых гвоздями хандлеров меня чуть не оштрафовали на деньги
12:29
чуть не считается
12:29
опять же -- часть твоих проблем решается в микросервисах
12:30
Дим, когда крадут субмагистральный коммутатор, то время замены его идет на секунды, И некогда в это время лазить в админку NOC и выключать/включать какие-то вещи
12:31
опять организационная проблема
12:31
т.е. воры должны предупредить заранее, что они своруют коммутатор ?
12:32
чтобы я успел отключить все джобы по данному коммутатору
12:33
как тебе помешают job'ы на сворованные коммутаторы?
12:34
ты представь себе ситуацию, монтажники по очереди втыкают и вытыкают SFP модули, и десятками плодятся джобы по проверке состояния портов
12:34
dvolodin: с целью того, ликвидации технеческого долга
12:34
?
12:34
рефакторинг какой ветки?
12:34
dvolodin:* с целью ликвидации технического долга
12:35
всего проекта, целиком
12:35
dvolodin: лови программиста в свои тенета, пока не ушёл
12:35
а смысл мероприятия, если не сеерет?
12:36
понижение порога вхождения
12:36
учёт регрессий
12:36
ликвидация явных ошибок
12:36
смысл в том, что если охота дальше заниматься 1 му, то окей
12:36
примерно 170k строк кода с огромным количеством логики внутри
12:37
и я про это первый раз слышу
12:37
да еще про initi спрашивает ;)
12:37
пока ценность имеют только профили SA и правила FM
12:37
это то, что привлекает народ
12:37
мне уже даже интерсно :)
12:38
уже готовая база для более 40 вендоров
12:38
это самя сильная часть NOC
12:38
70 вендоров
12:38
:)
12:39
dvolodin: ты уже сделал отслеживание результата выполнения операций в монге?
12:39
если уменьшить количество вендоров до одного, то никакой PM, IPAM и Inventory не нужен
12:39
монга сама их писать умеет
12:39
другими словами, какого хрена ивенты проёбываются без малейшего звука?
12:40
(из алярмов, ай мин)
12:40
evyscr: они точно не трутся как дубликаты?
12:40
и их не вытирает fm.archive?
12:40
ояе^Hзнаю?
12:41
в любом случае, такое поведение нока меня не слишком радует
12:42
если к проекту подходить, именно как к проекту, то я не вижу смысла мейнтейнить такое огромное кол-во кода, смысл в том, что проект полностью завязан на dvolodin, его такое положение вещей устраивает, мне внутренняя логика совсем не ясна, там
12:43
и я или собираю свой велосипед с нуля, или пытаюсь воспользоваться наработками, тк в ноке все же они есть
12:44
silver1: с итоге с ноком дешевле может оказаться собрать с нуля
12:44
(на сейчас)
12:45
тщательно поковырялся в кишках нока, и поковырылся в ряде других систем
12:59
silver1: и каков результат ?
13:18
teroni: да, я облажался
13:18
дочерние скрипты открывают свой коннект
13:18
сейчас поправлю
13:18
:)
13:19
dvolodin: я тебе так сразу и сказал :)
13:20
filonov: не сомневаюсь
13:22
dvolodin: а скажи, навскидку, будет ли в микросервисах в активаторе разделение на те же ping, telnet, snmp, ssh ?
13:23
чтобы пингом не занимался активатор
13:24
как по мне, так расточительно по ресурсам запускать активатор, только для того, чтобы пропинговать MO
13:25
опять же, если у MO нет ssh, зачем нам совершать лишние телодвижения ?
13:25
по-моему разумно иметь один агент который ставится рядом с оборудованием и взаимодействует с ними
13:26
и делает все
13:26
пингует
13:26
телнетится
13:26
и занимает гиг оперативы
13:26
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
13:26
22468 noc 55 52 0 696M 356M uwait 1 267.8H 104.00% python2.7
13:26
22464 root 1 76 0 134M 83836K select 3 243:02 45.17% python2.7
13:26
10813 noc 1 100 0 102M 43524K CPU0 0 0:02 18.36% python2.7
13:26
22465 noc 1 46 0 171M 105M select 1 435:10 2.49% python2.7
13:26
22469 noc 1 45 0 291M 219M select 1 314:51 2.10% python2.7
13:26
22463 noc 1 45 0 133M 67156K select 1 385:59 1.37% python2.7
13:27
./noc ctl status
13:27
activator-default:activator-default-00 RUNNING pid 16912, uptime 0:12:19
13:27
classifier-default RUNNING pid 24810, uptime 4 days, 16:48:40
13:27
correlator RUNNING pid 24811, uptime 4 days, 16:48:40
13:27
discovery-default RUNNING pid 8055, uptime 3 days, 1:09:31
13:27
fmwriter-default RUNNING pid 24796, uptime 4 days, 16:48:40
13:27
omap RUNNING pid 24805, uptime 4 days, 16:48:40
13:27
ping-default RUNNING pid 24800, uptime 4 days, 16:48:40
13:27
probe-default RUNNING pid 24815, uptime 4 days, 16:48:40
13:27
probeconf-default RUNNING pid 24797, uptime 4 days, 16:48:40
13:27
sae RUNNING pid 24813, uptime 4 days, 16:48:40
13:27
scheduler RUNNING pid 24814, uptime 4 days, 16:48:40
13:27
syslogcollector-default RUNNING pid 24806, uptime 4 days, 16:48:40
13:27
trapcollector-default RUNNING pid 24799, uptime 4 days, 16:48:40
13:27
web RUNNING pid 28947, uptime 4 days, 4:47:16
13:27
ага, т.е. уже пинг и активатор - это разные процессы
13:27
Dmitry1: это ты нок так доканал
13:29
Dmitry1: и коллекторы syslog/snmp trap тоже отдельные
13:30
причем пинги и коллекторы свои для каждого пула
13:31
уже лучше
13:31
а по FM
13:32
разделить классификатор и кореллятор
13:32
эм
13:33
они и сейчас разделены, не?
13:33
у нас сейчас классификатор занимается кучей разного
13:34
хандлеры, триггеры, disposition
13:34
кореллятор так само
13:34
ох, ну так формулируй однозначно
13:35
сказал так, что предлагаешь отделить классификатор от коррелятора
13:35
между классификатором и кореллятором должна быть прослойка, которая отвечает за принятие каких-то решений
13:35
в нее всунуть триггеры, хандлеры и т.п.
13:35
у кореллятора так само
13:36
классификатор долден только распознать syslog или trap, а дальше отправить его по цепочке
13:37
50-80% ивентов "умрут" еще на этапе классификатора как "unknown" или просто "информационные"
13:38
кореллятор тоже не должен делать что-то типа "actions", а передать это на следующую инствнцию
13:38
например
13:39
у нас пришел ивент "CRIT(2) Port <1:25> SFP RX power exceeded the low alarm threshold "
13:39
в алармклассе мы хотим показать вывод команды "show ddm ports 25 status"
13:39
эту команду должен запускать не кореллятор
13:40
нет, так не будет
13:40
классификатор тоже в пуле со своими железками
13:40
задача классификатора -- предварительная обработка событий и выделение потенциально аварийных
13:40
(15:33:45) Dmitry: 50-80% ивентов "умрут" еще на этапе классификатора как "unknown" или просто "информационные"
13:40
вот
13:41
задача коррелятора -- определение, что событие действительно аварийное и проведение RCA
13:41
а "потенциально аварийные", а заодно те, для которых нужен iventtrigger, handler кто обрабатывать будет ?
13:42
задача классификатора - пометить, что это событие нуждается в дальнейшей обработке
13:42
этим ты наполовину снизишь нагрузку на обработчики
13:44
классификатор вообще не должен знать о таких вещах, как eventtrigger, handler и т.п.
13:45
ему хватает того, что он парсит мибы, коллекции и т.п.
13:45
ну почему же
13:45
eventtrigger -- реакция на приход события
13:45
равно как и handler
13:45
задача классификатора - пометить, что это событие нуждается в дальнейшей обработке
13:46
Дим, не лепи монстра
13:46
handler'ы легковесны
13:46
не лепи сущностей сверх меры
13:46
:)
13:46
нисейчас никто кроме тебя не разбирается кв классификаторе и корелляторе
13:46
классификатор работает с событиями, коррелятор с авариями
13:46
ты предлагаешь сделать еще один обработчик
13:46
а можно я пёзд в чатики вброшу чтобы прекратить бесполезный срач
13:46
который будет посредине
13:47
и считаешь, что после этого со всеми этими тремя монстрами все сразу разберутся
13:47
и будет приниматть решение, нужно ли делать аварию из события, или нет
13:49
dvolodin: почему ? классификатор упростится до минимума
13:49
А промежуточное звено ничего не будет знать о коллекциях и мибах
13:50
Dmitry1: код запуска триггеров и handler'ов в классификаторе - 10 строчек
13:50
:)
13:50
да ?
13:51
функция load_triggers - 20 строчек
13:51
и содержала в себе баг, хехе
13:51
кстати вопрос, а зачем было делать два scheduler'a в виде legacy, если есть celery?
13:52
load_handlers
13:52
resolve_handlers
13:52
продолжать ?
13:53
кусочек письки!
13:53
13:53
Из всего - реально работать должны следующие условия:
13:54
if rule is None:
13:54
if rule.to_drop:
13:54
if rule.is_unknown_syslog:
13:55
и добавить условие, что обработка ушла следующему демону
13:56
silver1: из celery плохой scheduler
13:56
точнее, celery вообще не scheduler
13:57
dvolodin: Дим, я пытаюсь привлечь разработчиков, а для этого нужно предельно упростить код
13:58
dvolodin: а что насчет регулярных и отложенных тасков?
13:58
ну смотри
13:58
scheduler NOC'а цепляется за монгу и ему ничего не надо
13:59
для celery - нужен эрланг, кролик, сами процессы celery
13:59
что выпилить из нока? :)
13:59
13:59
поставил и забыл
13:59
причем во flower можно посмотреть как таск упал
13:59
а в скеджулере
14:00
я два дня прокопался
14:00
почему wipe кривой
14:00
потом батюшки очепятка в апи
14:00
и он просто игнорился
14:01
dvolodin: я все-таки мечтаю, чтобы NOC научился как-то работать с ивентами, а не тупо поднимать по ним алармы
14:01
сделай обработку в post save
14:01
=)
14:01
поэтому логику работы с уже распарсенными ивентами предлагаю вынести в отдельный демон
14:02
их и так коллектор, классификатор, который как раз работает с ивентами и коррелятор
14:02
тогда классификатор 100% не будет лезть в базу
14:02
а промежуточный демон - в зависимости от настроек
14:02
увеличится скорость обработки ивентов на многопроцессорных системах
14:04
сделается более доступным для сторонних разработчиков код классификатора
14:05
Dmitry1: классификатор занимается обогащением событий
14:05
"более доступным" при "логика не ясна"
14:05
как ему не лезть в базу?
14:05
у нас при обработке ивента происходят следующие события
14:06
chaotism: для этого нужен эрланг и кролик?
14:06
1 - определить, какому ивентклассу принадлежит событие
14:06
2 - вытащить из ивента переменные
14:06
или просто нормальная морда для просмотра статусов job'а?
14:06
3 - отдать их вышестоящему демону
14:06
зачем туда засовывать триггеры, хандлеры и т.п. ?
14:07
и так, для того, чтобы распарсить ивент, мы должны полазить в коллекциях, подгрузить мибы и т.п.
14:08
dvolodin:вместо кролика можно использовать редис, вместо монги можно использовать редис, про ерланг суть проблемы в его установке?
14:08
chaotism: оно есть в репах сентоси?
14:08
chaotism: и в установке тоже
14:09
postgis нам в свое время крови вылакал ведро
14:09
а вот вышестоящий демон должен посмотреть, что это за переменные, и в зависимости от этого или запустить хандлер, или пируле, или аларм, или джоб, или дропнуть ивент
14:09
не вспоминайте про постгис
14:09
умоляю
14:09
и его выпилили при первой же возможности, как spatial index появлился в монге
14:09
Dmitry1: а профит?
14:09
ну ок, по поводу ивентов, они же от классификатора к коррелятору, через scheduler идут, в в виде джоба
14:10
chaotism: не совсем
14:10
профит - классификатор никогда не лезет в базу. 10%
14:10
100%
14:10
а вот промежуточный демон может и полезет, если попадется хитрое правило
14:11
для этого, о чем я говорил вчера
14:11
я когда копался почему, пинги на карте имеют, отклонения по времени, просмотрел путь от sa до отрисовки
14:11
передача через job -- рудимент
14:11
job уже deprecated?
14:11
который позволяет сказать коррелятору, что нужно повнимательнее посмотреть на событие
14:11
я не успеваю за полетом мысли
14:11
во время подгрузки коллекций, у правил должен выставляться "флажок", передавать ли ивент на обработку дальше, или тупо завершать его на самом классификаторе
14:12
сам способ пинания коррелятора вполне обсуждаем
14:13
dvolodin: т.е. ты предлагаешь ивенттриггеры и хандлеры засунуть в кореллятор ?
14:13
начиная от простановки флажка - to_dispose в active event
14:13
и постоянного сканирования событий
14:13
причем флажок проставляется в момент загрузки правил из базы
14:13
заканчивая RPC-вызовом сервиса на корреляторе
14:14
классификатор просто знает, отправлять событие дальше на обработку, или "похоронить"
14:14
он ничего не должен знать ни о каких RPC
14:14
14:15
собственно суть такая
14:15
убить коллекции noc.events.new и noc.events.failed
14:15
fmwriter пусть пишет события сразу с классом New
14:15
и классификатор выбирает их по классу
14:16
при обработке меняет класс на правильный и дописывает то, что нужно
14:16
dvolodin: тогда уж подумай, как сохранить бывший mo. Иметь его интерфейсы, но выбросить их из discovery
14:16
объединили две железки в стек
14:17
neighbor discovery накрылся, вестимо
14:17
и?
14:18
зафонтанировали идеями что-то
14:18
хочу сохранить историю mo
14:18
хоть форум назад поднимай
14:18
поздно
14:18
TSergey уже ушёл
14:19
dvolodin: в noc/fm/models eventclass.py имеет размер больше, чем alarmclass.py
14:19
хотя должно быть наоборот
14:20
доебался до размера
14:21
zi_rus: я имею ввиду, что классификатор выполняет работы больше, чем кореллятор
14:21
а должно быть наоборот
14:21
хотя я все-таки за то, чтобы добавить третьего демона
14:22
микросервисы на вас плохо влияют
14:22
потому как засовывать пируле в коррелятор тоже не правильно
14:22
надо больше демонов
14:23
почему не сделать один демон
14:23
зачем эта порнография
14:23
zi_rus: горизонтальной масштабирование
14:23
коррелятор без классификатора нахрене не нужен
14:24
dvolodin: 10 одинаковых демонов
14:24
если хочешь
14:24
просто есть же зависимости
14:24
zi_rus: нет, тут конвееризация обработки
14:25
и потери производительности на переходах
14:25
более длинный конвеер будет давать большую общую производительность, но вносить большую задержку
14:25
да, именно
14:25
смотри
14:26
пусть у нас overhead на RPC - 10%
14:26
и одно ядро
14:26
народ, я с деревни, я вот не понимаю в чем цимес noc-tower? почему это киллер фича?
14:26
silver1: этого никто не знает
14:26
и не только об этом
14:26
ты еще workflow не видел
14:26
свой ansible-tower?
14:26
silver1: в микросервисах много процессов и их правильно нужно настроить
14:27
и они расчитаны на большое количество нод
14:27
на первом этапе мне нужно, чтобы он спокойно переварил сотню нод
14:27
в общем создать себе проблему, а потом героически ее решить
14:27
а то еще подумают что бездельник
14:27
и уволят
14:27
первая проблема, которая возникает - service discovery
14:28
башня раскладывает сервисы по разным нодам и назначает им порты
14:28
и готовит статический файл конфига
14:28
и настраивает supervisord на нодах
14:28
сервисы после запуска сцепляются в нужную топологию
14:29
если не будет башни, то нужен либо свой механизм service discovery
14:29
у меня пока одна нода. но мне нужна возможность управлять поведением FM
14:29
либо встраивать его в демоны
14:29
Dmitry1: лолъ. Ты (как и я) не вписался в рынок
14:29
если я не могу управлять классификатором и кореллятором, то нужно для каждого из них еще по одному демону
14:29
Dmitry1: твоя проблема никого не бодает,
14:29
Дим, одна нода едва тянет средний региональный филиал РТ
14:29
запаса почти нет
14:30
итого первая задача башни - статичный service discovery
14:30
важно то, что сейчас мы управлять классификатором не можем, потому что иначе он будет лезть в базу
14:30
дальше -- уперлась нода в полку - добавляешь еще одну и скидываешь на нее часть сервисов
14:30
руками -- очень муторно
14:31
в башне выкладка делается в несколько кликов
14:31
т.е Нок у нас мониторит условно средний региональный филиал, и когда одна нода не справляется, нам надо раскатывать вторую?
14:31
silver1: не совсем так
14:31
смотри
14:31
часть сервисов работают на уровне РФ
14:31
часть - на уровне макрорегионов
14:32
если ноде плохо -- действительно ставишь вторую рядом и скидываешь на нее сервисы
14:32
сейчас внесу ясность, просто, можно пример сервисов, насвкидку штук 5-6, чтобы я понял, что об одном и том же?
14:32
ну и плюс в RPC встроен балансирощик
14:33
да, у меня схема есть
14:33
я же и говорю, где-то 50% ивентов требуют дополнительной обработки
14:33
а можно глянуть плз
14:33
почему бы не вынести обработчик за пределы классификатора ?
14:35
dvolodin: так, это понял. (еще схему гляну) и готов дальше понимать в чем замысел noc-tower помимо того, что уже обсудили
14:35
второй ее замысел -- мониторинг NOC
14:35
:)
14:35
чтобы в одном месте все видеть
14:36
понял, а в ноке что мониторим?
14:36
а я-то, по серости, думал, что надо оптимизацией кода заниматься...
14:36
silver1: я себя тоже считаю программистом, но гланув на потроха NOC. прослезился, и понял, что ничего в этом не понимаю
14:36
evyscr: мне вот тоже так кажется
14:37
Dmitry1: да там ада много
14:38
silver1: каждый сервис содержит встроенный мониторинг, доступный по URL /mon/
14:38
или я в объектно ориентированном программировании ничего не понимаю, или это какая-то специфика NOC
14:39
забавно
14:39
а у меня без него недосчитывает
14:39
локальные патчи есть?
14:40
silver1: открылась схема?
14:40
dvolodin: не вижу по ссылке, у меня просто в домашную папку
14:41
e_zombie: слышь, тебя спрашиваю же
14:41
насколько я читал Кнутта, так ООП специально создано, чтобы избавиться от записей вида "alarm.managed_object.object_profile.down_severity"
14:41
17:37:55 < evyscr> локальные патчи есть?
14:42
парчей нет. есть наброски для профилей .
14:42
Dmitry1: кнут не писал про ООП
14:42
для дсламов хуавеев
14:43
ООП 70-х, это smalltalk
14:43
e_zombie: тогда надо смотреть в монгу
14:43
для SA как-то получилось все методы засунуть в объект NOCProfile ?
14:44
и как итог - куча контрибуторов
14:45
и то, у нас два обхекта NOCProfile и NOCScript
14:46
и народ теряется
14:46
давайте добавим монады?
14:46
опять же, хорошо документированные интерфейсы с примерами
14:46
ты предлагаешь объединить классы Кошка и Собака в мегакласс Котопес
14:46
я не против, но где же жопа?
14:46
да, потому как у них 99% общего
14:46
под систему с нодами и портами docker
14:47
в твоей логике у них общее - отсутсвие жопы
14:47
я уже пару лет предлагал объединить в один класс хандлер, триггер, джоб, солюшн
14:47
и у нас появилась еще пятая сущность - action
14:48
я же писал, что криво сейчас
14:48
хандлеры запускаются только из FM
14:48
actions только из PM
14:48
джобы только из Inventory
14:49
хотя 90% кода там общего
14:49
e_zombie: сделай 'hg status fm/apps/reportoutages/views.py'
14:49
и панельку управления тогда прийдется писать одну, а не пять штук
14:49
[root@nocproject noc]# hg status fm/apps/reportoutages/views.py
14:49
Not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
14:49
Not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
14:49
[root@nocproject noc]#
14:50
и запускать сможем из любого места NOC, а не из того, где прибито гвоздями
14:50
dvolodin: расскажи, в чем я не прав
14:52
Для FM у нас тогда вызов disposition, handlers или pyrule будет абсолютно прозрачным
14:52
Аналогично, для инвентори
14:53
и IPAM
14:53
e_zombie: ещё в монге сделай db.noc.fm.outages.find({"object": ID}), где ID - id верхнего mo
14:54
dvolodin: ты сейчас затачиваешь свои методы под конкретные задачи. но как только задачи чуть-чуть поменяются - вылазят проблемы
14:54
я же предлагал с самого начала разработать механизм RPC
14:55
в FM он уже частично есть, когда от классификатора кореллятору передается список переменных и их значение
14:56
> db.noc.fm.outages.find({"object": 91140})
14:56
{ "_id" : ObjectId("553ab925989fcf30b9dc7b00"), "object" : 91140, "start" : ISODate("2015-04-25T00:44:05.671Z"), "stop" : ISODate("2015-04-25T01:13:21.428Z") }
14:56
{ "_id" : ObjectId("553ac2c8989fcf30b9dcca3d"), "object" : 91140, "start" : ISODate("2015-04-25T01:25:12.019Z"), "stop" : ISODate("2015-04-25T03:45:18.834Z") }
14:56
{ "_id" : ObjectId("553ae441989fcf30b9dd9671"), "object" : 91140, "start" : ISODate("2015-04-25T03:48:01.351Z"), "stop" : ISODate("2015-04-25T05:00:14.444Z") }
14:56
{ "_id" : ObjectId("553af6ee989fcf30b9de5dad"), "object" : 91140, "start" : ISODate("2015-04-25T05:07:42.057Z"), "stop" : ISODate("2015-04-25T05:20:05.247Z") }
14:56
и тд
14:57
{ "_id" : ObjectId("56136a5c989fcf36ab9f3e85"), "object" : 91140, "start" : ISODate("2015-10-06T09:29:48.477Z") }
14:57
вот подозрительная запись
14:57
dvolodin: теперь ты пытаешься изобрести новый механизм в PM, называя его action
14:57
{ "_id" : ObjectId("558abfe1989fcf2afa38ed2a"), "object" : 91140, "start" : ISODate("2015-06-24T17:34:09.592Z"), "stop" : ISODate("2015-06-24T17:36:26.934Z") }
14:57
{ "_id" : ObjectId("558b9002989fcf2afa3fb93f"), "object" : 91140, "start" : ISODate("2015-06-25T08:22:10.284Z"), "stop" : ISODate("2015-06-25T08:23:52Z") }
14:57
{ "_id" : ObjectId("558bb13c989fcf1cde7a8076"), "object" : 91140, "start" : ISODate("2015-06-25T10:43:56.800Z"), "stop" : ISODate("2015-06-25T10:45:23.756Z") }
14:58
14:58
это не всё
14:58
хотя это все тот же RPC
14:59
вот тебя унесло
14:59
action -- типизированный сниппет
15:00
точнее -- возможность дать группе сниппетов осмысленное название
15:00
а хандлер ?
15:00
а пируле ?
15:00
а джоб ?
15:00
а солюшн ?
15:00
и выбирать правильный вариант команд для достижения одного и того же результата для разных железок
15:00
те же яйца, только сбоку
15:01
handler - хочешь, назови его плагином
15:01
у меня дебильный вопрос: почему я не могу вызвать action из FM, а только из PM ?
15:01
а ханлер только из FM, но не могу из PM ?
15:02
e_zombie: по идее, у тебя там могут быть две незакрытые записи
15:02
у меня аварий по этой железке нету.
15:02
И еесли уж
15:03
(16:56:32) dvolodin: action -- типизированный сниппет
15:03
(16:56:57) dvolodin: точнее -- возможность дать группе сниппетов осмысленное название
15:03
(16:57:32) dvolodin: и выбирать правильный вариант команд для достижения одного и того же результата для разных железок
15:03
что он делает в PM, а не SA ?
15:03
походу ещё одно добавление в noc fix на проверку валидности этой таблицы.
15:03
я реально, столько не выпью, чтобы понять эту логику
15:04
где ты увидел action в pm?
15:04
он в SA
15:04
:)
15:04
evyscr: ха. а оно в дауне.
15:06
e_zombie: сделай db.noc.fm.outages.find({"object": 91140, "stop": null})
15:06
> db.noc.fm.outages.find({"object": 91140, "stop": null})
15:06
{ "_id" : ObjectId("55781d8c989fcf06501827e8"), "object" : 91140, "start" : ISODate("2015-06-10T14:20:44.686Z") }
15:06
{ "_id" : ObjectId("56136a5c989fcf36ab9f3e85"), "object" : 91140, "start" : ISODate("2015-10-06T09:29:48.477Z") }
15:06
>
15:06
я имел ввиду, зачем в action писать {% ifequal address.afi "4" %}
15:06
ping {% if vrf %}vrf {{vrf.name}} {% endif %} {{address.address}}
15:06
{% else %}
15:06
ping6 {% if vrf %}vrf {{vrf.name}} {% endif %} {{address.address}}
15:06
{% endifequal %}
15:07
алярвы в архиве с дауном этой железки. уже как 28 дней
15:07
e_zombie: патч правильный, данные в таблице поломаны
15:07
Dmitry1: зачем есть шаблоны, когда можно кодом сгенерить строки
15:07
если у нас есть скртипт sa/profiles/Cisco/IOS/ping.py
15:07
evyscr: значит это надо в noc fix вкрчивать
15:08
а хрен его знает, как его правильно фиксить
15:08
надо придумывать какой-то "stop" date
15:08
я имел ввиду "action command", который зачем то дублирует скрипты SA, но при этом теряет 90% их функционала
15:08
на 1 секунду больше и всё
15:09
там нет stop'а?
15:09
или что?
15:09
да
15:09
в двух записях
15:09
то есть не null, а посто нет?
15:09
{ "_id" : ObjectId("56136a5c989fcf36ab9f3e85"), "object" : 91140, "start" : ISODate("2015-10-06T09:29:48.477Z") }
15:10
null - это аналог $exists: false
15:10
dvolodin: смотри, сам "action" в SA вроде как нормально задуман. Есть скрипт, есть переменные, которые ему передаются
15:10
точнее, включает в себя
15:10
подозреваю что такая же поебень и для ребутов будет
15:10
добавить еще возможность принимать переменные
15:11
и готовая обертка для хандлеров, джобов, солюшенов, триггеров
15:11
e_zombie: не, ребуты были пофикшены раньше
15:11
я ж возмущался-)
15:11
dvolodin: как тебе такой вариант ?
15:12
ну если впилить это в фикс то не прийдётся лопать ть другие куски кода.
15:12
А вместо "action command" будешь запускать реальные триггеры, хандлеры и т.а.
15:12
это много где вылезти может .
15:12
придётся-придётся
15:13
e_zombie: в общем, если ты сдавал отчёты руководству - ты его слегка обманывал
15:13
тож верно
15:14
здесь на них только я смотрю иногда
15:14
я строил отчёты по ошибкам на портах эзернет для области. народ начал по ним работать только когда начался массовый отток и мрф вломила пиздов по первое число.
15:15
блин, потратил три часа времени, но Дима остался при своем мнении
15:15
мысль вечна.
15:15
вернее идея.
15:16
e_zombie: давай пиписьки пость
15:16
... и достал бутыль горилки
15:16
ты просрал этот момент. я пиписьки утром выкладывал и одну вечером
15:16
но специально для тебя повторю
15:16
Я уже два года пытаюсь доказать Диме, что он должен писать NOC не для себя, а для народа
15:17
Dmitry1: это можно доказать только деньгами
15:17
Ааааа ! волосатая !!!!
15:17
15:18
спакуха. это без ретуши.
15:18
только вчера отснял. не ббыло времени ретачить. только отконвертил.
15:19
evyscr: народ готов платить, но их отпугивает то, что им прийдется кроме всего прочего у себя содержать на полную ставку программиста на питоне, а также специалиста по mongodb и postgresql
15:20
одного программера достаточно .
15:20
не так уж и большой объём работ
15:21
т.е. ты предлагаешь провайдеру на 500 абонентов нанимать себе на полный день программиста на питоне ?
15:21
платить dvolodin напрямую
15:21
нахуя ? тольковый прогер напишет профиля и поправит кривые места в течении двух месяцев. плюс два месяца на тестирование с админом конторы.
15:22
e_zombie: потому как в том же FM чуть ли не в зависимости от фазы луны должна быть разная реакция на события
15:23
А у димы один ответ - пишите хандлеры и солюшены на питоне
15:23
не хотите писать - заплатите тому, кто напишет
15:24
начиная с определённой суммы dvolodin, подозреваю, выполнит любые пожелания
15:24
evyscr: я про то, что сегодня мне надо, к примеру, подавить это событие, а завтра я поменял коммутатор, и мне не нужно это
15:25
это даже не питон, а regexp
15:26
у меня вполне успешно живёт в ignore event rules
15:26
какой регексп ? прям в хандоере ? а ничего, что хандлер написан на питоне ?
15:27
"подавить событие" && "хэндлер"?
15:53
да
15:54
а еще какой-то способ есть ?
15:54
написать pyrule на том же питоне ?
15:54
или написать солюшн на том же питоне
Share this page
Share this page: