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: 12.11.2015
dvolodin #
06:15
zi_rus: а ты еще в Москве?
06:15
:)
[Marael] #
06:18
а как отдебажить авторизацию по лдап?
teroni #
06:22
на циске c2921 ошибка в get_switchport
06:22
http://pastebin.com/Grx1ktC2
zi_rus #
06:26
dvolodin: не, две недели как вернулся
06:26
сеть запущена и работает
06:27
пользуйтесь
dvolodin #
06:27
это вы пользуйтесь, мачты вам смонтированы, каналы организованы ;)
06:28
хотя посмотрим, мегафон в послежднее время упал ниже плинтуса
06:28
остальные двое - не лучше
zi_rus #
06:29
ну мы то пользуемся чтобы вы пользовались
e_zombie #
06:42
,,
[Marael] #
06:51
лдап авторизаци использует кто-нибудь?
e_zombie #
07:13
https://pp.vk.me/c623422/v623422151/33c02/o7yx8DmX-Pk.jpg
buggy-funhouse #
07:33
e_zombie: какие ногти грязные!
e_zombie #
07:33
:) такжешь без фотошопа жеж. там ещё волосков море
07:33
времени брить её не было
07:40
тоесть тебе не понравилась фотка ?
zi_rus #
07:40
e_zombie: а как же стремление с идеалу, ради искусства
e_zombie #
07:41
не за всем удаётся проследить. вот в следующий раз буду следить за ногтями. опыт сын ошибок трудных
filonov #
07:50
а готовые метрики для CPU Load у нас есть?
|Marael| #
07:54
yum install python-devel
07:55
не туда :)
zi_rus #
08:10
filonov: наверное нет, даже у одного вендора в одном профиле на разных железках это могут быть разные оиды
08:10
если запилишь
evyscr #
08:10
лол
zi_rus #
08:10
будет круто
evyscr #
08:11
у длинка заебётесь
08:11
но делать надо...
filonov #
08:11
длинк пофиг меня больше циска интересует
zi_rus #
08:11
у ASR9k есть отдельный цпу на каждой линейной карте
evyscr #
08:11
а делать всё одно придётся общее решение
filonov #
08:11
Зайдем с другой стороны - есть Custom | SNMP | OID
08:11
и как указать собственно OID
zi_rus #
08:12
собсно берешь и указываешь
08:12
там все очевидно
filonov #
08:12
где?
zi_rus #
08:12
даже я нашел
filonov #
08:12
было б очевидно - я б не спрашивал
evyscr #
08:12
freeseacher: конфлю умеет темплейты? (как в mediawiki)
|Marael| #
08:16
так ldap завел на сентос, но обнаружил баг. не удалятся пользователи
08:16
авторизацию
evyscr #
08:17
openldap или 389 ds?
08:18
обнаружил баг - вешай внятный issue в bt
|Marael| #
08:18
mandriva DS
evyscr #
08:18
на центосе??
|Marael| #
08:18
lf
08:18
да
evyscr #
08:19
упрлс
|Marael| #
08:19
пользователи в ноке н удаляются
08:19
это дистр такой
08:19
на основе сентоса
evyscr #
08:19
чего?
08:19
мадрака была, конечно, на основе шапки, но они разбежались в начале нулевых
|Marael| #
08:20
да, но есть роса линукс
evyscr #
08:20
бгг
08:20
и Денис Корявов, лол
|Marael| #
08:20
э?
evyscr #
08:20
да так, один из собирателей росы
08:21
эпичные ошибки делал при пакетировании
08:21
впрочем, я за ними не слежу, всё могло измениться в лучшую сторону
filonov #
08:21
zi_rus: я про Metric Sets а не про Metric Config
|Marael| #
08:24
а на кб можно авторизоваться через гугл аккаунт? или надо регатся обязательно?
evyscr #
08:25
регайся
08:26
zi_rus: а ты графану хорошо изучил? всякие там авто-дашборды
08:26
ну и вообще изменение дашборда (скриптом)
08:27
а то, понимаете ли, хочется, но вникать не желаем-с.-)
|Marael| #
08:27
а где собственно регистрация?
filonov #
08:28
evyscr: там вроде были шаблонные дашборды
08:28
но в детали я пока не вникал
evyscr #
08:28
я вообще хочу автодобавление графика в row при появлении метрики
08:28
(я про errors на порту)
zi_rus #
08:30
evyscr: не, и уже год не имею делов с графаной
08:30
хотя надо бы
|Marael| #
08:31
регаться надо на bitbucket?
filonov #
08:34
И таки кто подскажет - как настроить Custom SNMP Oid в MetricSet?
08:36
dvolodin: И таки кто подскажет - как настроить Custom SNMP Oid в MetricSet?
teroni804 #
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
evyscr #
08:47
teroni804: nice catch
08:47
пинай, пока не исправят
|Marael| #
08:51
NOC-1709
kokozzi #
08:55
с Custom SNMP Oid я долго боролся, но так и не победил. правда это было в стабильной ветке, а не в develop, но думаю там мало что изменилось в этой части.
08:55
метрика приходила от железки, но на одном из этапов обнулялась
08:56
уже в самом ноке
evyscr #
08:56
хех
08:56
"стабильная ветка нока" - оксюморон
08:57
а что значит "обнулялась"?
08:57
значение в ноль или ещё что?
kokozzi #
08:57
да, значение в ноль
08:57
сейчас не помню точно между какими модулями
08:58
но на входе метрика ловила значение в 56, писала об этом логи, а в следующем логе было видно как для нее же выставлено значение 0
filonov #
08:59
kokozzi: а это точно был Metric Set?
|Marael| #
08:59
и еще один NOC-1710
kokozzi #
08:59
в Metric Set добавлял метрику Custom | SNMP | OID
filonov #
09:01
kokozzi: и куда там ввести OID?
kokozzi #
09:02
OID я в Metric Config вводил
filonov #
09:03
Metric Config - это совсем другое. ТОгда понятно почему оно у тебя обнулялось
kokozzi #
09:04
значит я не особо понял механику работы всего этого
09:06
если в Metric Set можно добавить Custom | SNMP | OID, но он не связан с Metric Config - то я вообще не вижу способов скормить ему OID
filonov #
09:06
kokozzi: о том и речь
kokozzi #
09:06
и собственно зачем тогда нужен Metric Config?
filonov #
09:07
kokozzi: для одиночных метрик не привязанных к объектам
kokozzi #
09:08
окей, но это не объясняет обнуление значений
filonov #
09:10
объясняет. Для Set-а нет источника данных - получаем нули
kokozzi #
09:12
в итоге - баг или фича?
filonov #
09:13
скорее баг с недофичей
kokozzi #
09:19
раз заговорили про PM - никто не сталкивался с проблемой, что у свичей Cisco с интерфейсов не собираются ошибки? load при этом собирается
evyscr #
09:19
а значения ненулевые?
kokozzi #
09:22
нулевые
09:23
но для роутеров нули показывает в графиках
09:24
а для свичей в графане даже нельзя выбрать пункт errors
evyscr #
09:25
ноковская осоюенность: пока нули - метрика не создаётся
zi_rus #
09:28
да, это багофича
09:28
это бага, но с полезным эффектом
09:28
так что решили не чинить
kokozzi #
09:29
интересная особенность, спасибо за информацию
evyscr #
09:33
zi_rus: это фича, пока не начинаешь делать дашборд
09:33
и вот тогда фича превращается в багу
Dmitry1 #
09:33
извиняюсь, что встреваю, давно не смотрел, что там менялось в PM
09:33
оно до сих пор оторвано от SA ?
evyscr #
09:34
в смысле?
Dmitry1 #
09:35
в смысле того, чт одля разных моделей железки могут быть разные OID, а определить железку может только скрипт SA get_version
zi_rus #
09:35
evyscr: да, я тоже с этим столкнулся, поэтому и начали разбираться. но посмотри на другую сторону, нахуа забивать базу нулями
09:35
Dmitry1: с этим все пучком, отлько зависимость оида от железки никто не использовал, но dvolodin что можно
Dmitry1 #
09:37
ага
09:37
т.е. длинки идут в топку
09:37
для меня PM попрежнему бесполезен
zi_rus #
09:39
ну если ты приложишь немного усилий и запилишь, то все у тебя будет
Dmitry1 #
09:39
что запилить ?
09:39
1000 custom probes ?
zi_rus #
09:39
dvolodin: что ему запилить?
Dmitry1 #
09:39
по десятку на каждую модель длинка ?
zi_rus #
09:39
если длинк такое говно, то да
09:40
нок тут не поможет
09:40
тебе уже ничто не поможет
Dmitry1 #
09:40
у нас есть SA, который знает, для какой модели длинка что нужно делать
evyscr #
09:40
не знает, тащем-та
Dmitry1 #
09:40
и есть совершенно оторванный от реалий PM, который собирает данные со справочника стеля
zi_rus #
09:40
Dmitry1: он не просто знает, а ты сам лично хурил эти профили чтобы он знал
09:41
и с РМ тоже самое
evyscr #
09:41
DxS монструозен
zi_rus #
09:41
захуяришь оиды и он тоже будет знать
Dmitry1 #
09:42
root@noc:/usr/local/noc/fm/collections/mibs/DLink # ls | wc -w
09:42
117
evyscr #
09:42
und?
09:42
да, жопа
09:42
эта жопа называется длинк
Dmitry1 #
09:43
root@noc:/usr/local/noc/fm/collections/mibs/Cisco # ls | wc -w
09:43
58
09:43
эта жопа называется циско ?
evyscr #
09:44
знаешь, у циски на cpu load явно меньше oid'ов
09:44
на порядки, я бы сказал
Dmitry1 #
09:44
хорошо, специально для тебя
09:45
root@noc:/usr/local/noc/fm/collections/mibs/Cisco # ls | grep OLD | wc -w
09:45
4
09:45
навскидку
evyscr #
09:45
и что?
09:45
длинк от этого лучше не становится
Dmitry1 #
09:46
а то, что стандартные пробы для этиз моделей циско (а список этих моделей знает только SA) идут лесом
evyscr #
09:47
которые?
Dmitry1 #
09:47
что которые ?
evyscr #
09:47
IFMIB'овские?
Dmitry1 #
09:48
да
09:48
да
zi_rus #
09:48
стандартные пробы используют стандартные оиды, то что они на циске работают означает лишь то что циска следует стандарту
Dmitry1 #
09:48
да прочитай, что я выше написал
evyscr #
09:48
лол, ты написал то, что сам не понял
Dmitry1 #
09:49
загляни в OLD-CISCO-INTERFACES-MIB.mib
evyscr #
09:49
стандартные - это имеено ifmib'овские
Dmitry1 #
09:49
и посмотри, какой там стандарт
evyscr #
09:49
всё остальное (в данном скопе) - отклонения от стандарта
Dmitry1 #
09:50
SA как-то с этим разбирается
evyscr #
09:50
хреново, если честно
Dmitry1 #
09:50
в нем можно сделать, что если такая-то модель с таким-то IOS - то дергать такой-то OID
09:51
как это можно сделать в пробе PM ?
09:52
только что выше был разговор, что на определенных моделях циско errors сидят в другом OID
evyscr #
09:53
ты упарываешься на ненужную тему
Dmitry1 #
09:53
мне очень нравился NOC, ровно до версии 0.6.4
evyscr #
09:53
и говорить про привязку к sa в этом вопросе - глупо
Dmitry1 #
09:54
после этого с него сделали монстра, который ломится на железки, просто так, ничего от них не получая
09:54
ну нету у меня такого OID, а NOC будет раз за разом долбить железку
dkul #
09:55
Добрый день. У меня используется CISCO WLC 2504 какой профиль надо выбрать, чтобы железка бэкапилась по ssh? CISCO.IOS не подходит, как и CISCO.AireOS
Dmitry1 #
10:03
Кстати, по длинкам
10:04
у меня есть еще и циски, и джунипер
10:04
и тоже, пришлось с них снимать калочку "is managed", потому как NOC ведет себя абсолютно неадекватно
10:09
а управлять его поведением невозможно
10:12
мне тут вероятно могут навесить задачу управления и мониторингом пару тысячами свичей
10:12
подскажите, пожалуйста, есть ли более менее вменяемая альтернатива NOC ?
10:13
nagios рассматривал, но не подходит
10:17
пока присматриваюсь к d-view
e_zombie #
10:21
dkul: писать свой.
10:21
если ни один не подходит .
filonov #
10:21
а из-за чего interface discovery может становиться Suspend?
e_zombie #
10:21
крешится .
10:22
дебаг проходит ?
filonov #
10:23
Крешей нет, дебаг проходит.
10:24
самое странное что version inventory тоже Suspend. При том что там жестко вовзращаемые константы которые крешится не могут в принципе1
10:28
Я попробовал нарисовать Fake-профиль который гонит во всем кроме интерфейсов по SNMP
evyscr #
10:31
filonov: caps discovery?
10:32
вроде как остальные уже от него зависят
10:32
Dmitry1: попробуй zenoss
10:33
но у меня неадекватного поведения в последнее время практически не видать
misak #
10:33
забикс
filonov #
10:33
evyscr: как раз caps вполне отрабатывает
misak #
10:33
зенос опен сорс не очень
10:34
хотя я смотрел его в году 2006-ом
evyscr #
10:35
у меня один знакомый заюзал где-то в районе 2010
10:35
я сам не вникал
silver1 #
10:35
кстати народ, немного в сторону вопрос, тут один товарищ прямо лестно отзывался об initi
filonov #
10:36
evyscr: у тебя не видать неадекватного поведения потому что ты наверно не пытаешься использовать ssh на говнодлинках у которых проца даже на пинги не всегда хватает
Dmitry1 #
10:36
там FM или тупая пинговалка ?
evyscr #
10:36
filonov: ну, не надо наступать на любимую мозоль Димы
Dmitry1 #
10:36
да причем здесь длинки ?
10:36
у меня 6509 каталист
evyscr #
10:37
и что?
Dmitry1 #
10:37
на нем поднят SLB
silver1 #
10:37
там типа как универсальное решение медиации для консолидации разрозненных и неструктурированных систем
evyscr #
10:37
повесь багу на то, что ты считаешь неадекватным поведением
silver1 #
10:37
как на сайте пишут
Dmitry1 #
10:37
c с десяток физических серверов видятся как один логический
evyscr #
10:37
silver1: нихерасебефамилия
Dmitry1 #
10:38
вполне штатная фича, даже для ентерпрайза, как любит Дима
silver1 #
10:38
по сути прослойка для работы с тем, что не snmp, как с snmp
Dmitry1 #
10:38
по определенным причинам, для серверов установлено разное количество максимальных попыток соединений
silver1 #
10:38
вот вопрос, просто мб кто тыкал?
Dmitry1 #
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
то нужно поднимать аларм
silver1 #
10:40
еще немного попахивает троль вопросом, но все же, а кто как смотрит на уменьшение функционала нока?
evyscr #
10:40
Dmitry1: блджад, назови уже bug number
Dmitry1 #
10:40
как мне это сделать в текущем FM ?
filonov #
10:41
Dmitry1: прислать патч
evyscr #
10:41
без bugno тебя не интересует решение
silver1 #
10:41
смотрю просто его сорцы, и омг, очень тяжело, куча зависимостей, велосипедов и проч
e_zombie #
10:42
silver1: ты смотри миросервисы. девелопу осталось жить в таком виде два месяца
evyscr #
10:42
silver1: dvolodin уменьшает число зависимостей, но при этом добавляет в два раза больше новых
Dmitry1 #
10:42
evyscr: какой такой баг ?
evyscr #
10:42
о, решение не интересно.
Dmitry1 #
10:42
баг давно известный в classificationrules все поведение FM прибито гвоздями двухсотками
silver1 #
10:42
я смотрю микросервисы, омг, у меня глаза выкалываются как с ansible извращаются
evyscr #
10:43
bug no
10:43
номер, сестра, номер
e_zombie #
10:43
silver1: самое время поучаствовать в этой вакханалии
evyscr #
10:44
e_zombie: а как быть не-метросексуалам?
silver1 #
10:44
нене, я пас. идея в том, чтобы прирезать скажем так 70-80% функционала нока, оставив норм кодовую базу
evyscr #
10:44
silver1: unreal
e_zombie #
10:44
evyscr: задраить люк в танке на два месяца.
evyscr #
10:45
e_zombie: дык, я давно
e_zombie #
10:45
silver1: в теории можно это пробовать сделать после сливания веток.
evyscr #
10:45
бгг
Dmitry1 #
10:45
evyscr: нету номера. есть проблема, о которой все знают. проблема называется - невозможно управлять поведением FM
silver1 #
10:45
evyscr1: почему? мб вообще в новый проект выльется конечно
evyscr #
10:46
Dmitry1: нет бага - нет проблемы
e_zombie #
10:46
аминь
silver1 #
10:46
Dmitry1: это из-за работы job'ов но там да - адский замес внутри)
filonov #
10:46
silver1: а что именно ты бы прирезал?
Dmitry1 #
10:47
какие нахер джобы ? вы код смотрели ?
silver1 #
10:48
filonov: я вот и спрашиваю у вас, что прирезать, потому что я по сути прогер а не сетевик, мне вообще все равно что прирезать
evyscr #
10:48
silver1: прирежь extjs
Dmitry1 #
10:48
как вам такой код:
evyscr #
10:48
см. ткж. pagerless
Dmitry1 #
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()
silver1 #
10:48
Dmitry1: да, там классы алармов дублируются тупо один в один
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
найдите два различия
silver1 #
10:49
Dmitry1: там не только такого много, просто любое место можно открыть и придраться
Dmitry1 #
10:50
я не про то
evyscr #
10:50
silver1: ты не в теме
Dmitry1 #
10:50
а про то, что у нас сейчас есть следующие сущности: handlers, jobs, solutions, pyrule, actions
silver1 #
10:51
evyscr: extjs не правильно приготовлен, на манер еще 3 версии, там все в куче просто
Dmitry1 #
10:51
раньше хватало только pyrule, и управлять ими можно было через триггеры
10:51
сейчас добавились еще 4 сущности
10:51
которые такие-же, но с перламутровыми пуговицами
10:52
никто не знает, что они делают, никто, кроме Димы в них н еразбирается
10:52
запускаются они когда хотят и делают что хотят
silver1 #
10:52
Dmitry1: собственно я это и имел ввиду, когда писал про джобы, но 1 предложением не передать весь замес
Dmitry1 #
10:52
управлять ими не возможно
evyscr #
10:53
silver1: ежели ты поправишь баги с extjs - народ тебе проставится
e_zombie #
10:53
утраиваю
silver1 #
10:53
evyscr: какой баг? белый квадрат?
10:55
у меня такой вопрос, я правильно понимаю, что в ноке норм функционал? но нет одного механизма обработки задач?
Dmitry1 #
10:55
особенно мне нравится вот это:
silver1 #
10:55
потом след, нужны ли модули inventory и например configuration management?
Dmitry1 #
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 ?
buggy-funhouse #
10:57
скучно
10:57
ну он сообщение по сислогу не ловил?
10:57
от safaguard
Dmitry1 #
10:57
нет
10:57
safeguard сработал, когда загрузка процессора достигла 90%
buggy-funhouse #
10:57
я хз, я давно выключил всё, кроме сбора конфигов
Dmitry1 #
10:58
я и сбор конфига выключил
filonov #
10:58
Dmitry1: он пытается получить ровно то, что ты сконфигурил. А почему у тебя проц кончается - тебе известно
Dmitry1 #
10:59
представь себе ситуацию, настраиваешь ты свич удаленно, время от времени делаешь "сохранить конфиг", потому как связь нестабильная
10:59
NOC по FM порлучает "config changed" и радостно начинает ломиться на этот же свич
11:00
в резвльтате тебя выкидывает со свича, загрузка процессора 100% - начальство ебет тебя в жопу
filonov #
11:00
и правильно делает
Dmitry1 #
11:00
что тут правильного ?
11:01
нафига такая автоматизация нужна ?
filonov #
11:01
те кто ходит на говнодлинки по ssh - должны страдать. Тут всеправильно
Dmitry1 #
11:01
причем здесть длинк ?
11:02
у меня на столе 4 штуки allied telesyn
teroni #
11:02
не хочешь получать конфиги - отключи..
Dmitry1 #
11:02
в отличие от длинков они виснут наглухо, и помогает только аппаратная перезагрузка
filonov #
11:03
Если ты не понимаешь какая связь между загрузкой проца и SSH - начальство все делает правильно
Dmitry1 #
11:03
я хочу, чтобы NOC заходил на устройства когда мне нужно, а не когда ему захочется ?
teroni #
11:03
отключи шедулер
filonov #
11:04
отключи трап на изменения конфига и будет тебе счастье
Dmitry1 #
11:05
отключить трап на падение порта
11:06
отключить трап на reboot, start
11:06
вопрос - а нафига мне тогда такой FM ?
filonov #
11:06
Dmitry1: а FM к твоих проблемах не имеет ни малейшего отношения
teroni #
11:07
а нафига мне FM без трапов?
Dmitry1 #
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
],
zi_rus #
11:08
Dmitry1: в РМ это можно сделать. чтобы с длинка дергались другие оиды, я dvolodin проел всю плеш про это, он сказал что можно
Dmitry1 #
11:08
"handlers": [
11:08
"noc.fm.handlers.event.link.oper_down"
11:08
],
zi_rus #
11:08
почитай в irc log
11:08
он даже применры приводил
11:10
декораторы видимо
11:10
надо использовать
filonov #
11:12
гм. Нок подумал и version_discovery разсуспендил. Теперь бы интерфейсы того
silver1 #
11:12
народ, такой вопрос, допустим мы прирезаем job, actioan pyrule и проч и сводим в один механизм, в итоге у нас нах отлетает работа вообще всех модулей. И надо модули нацепить на новый единый механизим
11:13
какие модули цеплять в первую очередь?
Dmitry1 #
11:13
SA
silver1 #
11:13
потому что жизнь ограничена к сожалению
Dmitry1 #
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
filonov #
11:14
Вот как раз его и надо переделывать в первую очередь
Dmitry1 #
11:15
где гвоздями прибиты какие-то куски от Cisco
silver1 #
11:15
ты про чтобы он ходил по telnet/ssh , получал интерфейсы, и проч инфу?
Dmitry1 #
11:15
что в PM делают пробы от Циски ?
11:15
silver1: нет, глянь тот же профиль длинка
11:16
где в L2 свичах не пытается искаться информация про PIM, BGP, OSPF и т.п.
11:17
вроде была здравая идея про cfpfbilities
silver1 #
11:17
понял, надо сделать так, чтобы нок не лез на эти железки за этой инфой? (PIM, BGP, OSPF)
Dmitry1 #
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);
filonov #
11:23
silver1: я бы начал с переделки иерархии классов. Дабы можно было плодить сущности для очень похожих моделей с немного разными фичами
Dmitry1 #
11:24
в первом цикле тупо идет сравнение, а во втором - автор решил показать, насколько он крутой
11:25
так вот, разных мест в NOC, где автор показывает, насколько он крутой - полно
11:25
к сожалению, потом никто не может разобраться, что эти места делают
11:26
соответсвенно - разработчиков, которые могут чем-то помочь автору - 0
11:27
попытки воззвать к здравому смыслу оканчиваются неудачей
buggy-funhouse #
11:28
мне кажется, таких мест очень много
11:28
система должна быть дубовее, как по мне
Dmitry1 #
11:29
простейший пример
11:29
раньше, чтобы добавить/изменить правило FM, достаточно было отредактировать текстовый файл
silver1 #
11:29
я уже видел, __init.py__ что может быть пустой или с портянкой
11:30
куча текстовых обращений и игр getattr setattr
Dmitry1 #
11:30
сейчас же - совершить около 10 телодвижений, причем половину из них - набирая в командной строке команды длиной 100-200 символов
filonov #
11:30
Я таки победил suspend. Хотя и весьма радикально
Dmitry1 #
11:32
в результате - за последние года два количество изменения в правилах FM уменьшилось раз в десять
11:34
за все время существования NOC не было ни одного коммита стороннего разработчика в подсистему хандлеров, джобов и солюшенов
11:34
да, еще в пробы PM
11:35
как по мне - проект развивается в каком-то неизвестном направлении, не применимом в реальной жизни
11:36
как минимум, делается все, чтобы затруднить стороннему человеку принести пользу проекту
dvolodin #
11:37
filonov: он еще в suspend укладывал задачи для упавших объектов
11:37
чтобы SA не трясти
filonov #
11:39
dvolodin: точно в suspend а не в disable?
dvolodin #
11:40
вот этого не помню
filonov #
11:41
dvolodin: в любом случае пинговалка не работает у меня
11:42
но прикол в другом - interface_discovery все равно fail. Debug-script отрабатывает нормально. Куда смотреть?
dvolodin #
11:42
silver1: все, что может быть отрезано, уже отрезано в микросервисах
11:43
silver1: а ты что скажешь про initi?
teroni #
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
filonov #
11:49
teroni: потому что это разные скрипты
dvolodin #
11:52
teroni: вот это посмотрю
11:52
не доолжно
11:52
filonov: нет, они одним коннектом пользуются
Dmitry1 #
11:53
вот ситуация
11:53
сейчас нужно настроить новую железку
11:54
я вынужден спрашивать напарника, какой у нас свободный IP есть
11:54
у него стоит The Dude
11:55
наш IPAM заносит в себя что угодно, но только не IP реальных железок
dvolodin #
11:57
Приличные люди сначала выделяют адрес в ipam, потом прописывают его на железку
evyscr #
11:58
приличные люди, к сожалению, обычно живут в вакууме
dvolodin #
11:59
наверное, нужно разделить ip discovery для интерфейсов и для arp-кеша в разные виды
11:59
первый нужен почти всегда
11:59
второй - сильно зависит от условий применения
evyscr #
11:59
надо
dvolodin #
12:00
в микросервисах они как раз попадут - один в box, второй в periodic discovery
filonov #
12:01
dvolodin: а как мне для циски повесить метрики на транк? а не на каждый отдельный из интерфейсов транка
Dmitry1 #
12:01
вполне штатная ситуация, когда в подсети выделяется один или несколько диапазонов адресов для DHCP клиентов, а часть адресов - для оборудования
12:01
такое умеют даже китайские роутеры
filonov #
12:03
Dmitry1: то, что допустимо для китайских роутеров недопустимо для сети оператора
evyscr #
12:04
filonov: к сожалению, то, что недопустимо, всё равно может присутствовать...
filonov #
12:05
evyscr: Это уже организационная проблема а не техническая
dvolodin #
12:07
50% Диминых проблем связаны с организационными причинами. От него они не зависят
evyscr #
12:07
а жить как-то приходится...
dvolodin #
12:07
но далеко не все сценарии стоит тащить в NOC
Dmitry1 #
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
evyscr #
12:08
вообще, все сценарии надо тащить в том смысле, чтобы нок, увидев такое, не сходил с ума
Dmitry1 #
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
evyscr #
12:08
(и в трейс не падал)
Dmitry1 #
12:09
на свиче где-то 1500-2000 абонентов, подключенных по DHCP
dvolodin #
12:09
evyscr: тогда мы погрязнем в частностях
Dmitry1 #
12:09
в сетях, которые находятся в exluded - оборудование
12:09
dvolodin: нет, надо просто задачу разбить на кучу мелких
dvolodin #
12:10
более перспективный подход -- некая базовая платформа, которая работает для 80% инсталляций
filonov #
12:10
dvolodin: организационные проблемы очень плохо решаются техническими методами. Иногда - вообще не решаются.
dvolodin #
12:10
и возможность допилки под контретные случаи для оставшихся 20%
Dmitry1 #
12:10
у нас ip адреса могут собираться двумя способами - get_interface и get_arp
dvolodin #
12:10
filonov: моя политика -- я не решаю организационные проблемы техническими методами
Dmitry1 #
12:10
не лепить эти два метода в один, а дать возможность включать и выключать эти методы для каждой подсети
dvolodin #
12:11
одно из направлений использования NOC - именно форсирование определенных административных политик на техническом уровне
12:11
и контроль за их выполнением
12:11
Dmitry1: я и говорю -- два независимых метода ip discovery
12:11
они и сейчас независимы
filonov #
12:11
dvolodin: и это правильно
dvolodin #
12:11
только ip discovery на интерфейсах включается только если включен общий ip discovery
Dmitry1 #
12:12
также, два независимых метода собирания MAC адресов
dvolodin #
12:12
который тянет get_mac
12:12
MAC'и интерфейсов и так укладваются в базу
12:12
в MAC DB они не нужны, я уже говорил почему
12:13
итого - в микросервисах я разделяю ip discovery отдельно для box, отдельно для periodic
12:13
согласен, что давно уже пора
Dmitry1 #
12:13
тогда нужно завести базу macdb2, гду будет такой же поиск, как и в базе macdb, и куда будут укладываться mac адреса ecnhjqcnd
12:13
устройств
dvolodin #
12:13
зачем
12:13
если они уже лежат в интерфейсах
12:13
:)
12:13
и эти MAC'и, кстати, анализирует discovery
12:14
lldp, например
Dmitry1 #
12:14
у нас нету возможности просмотра и поиска по MAC адресу, как в таблице macdb
dvolodin #
12:14
а что мешает ее сделать?
12:14
глобальный поиск, кстати, ищет
Dmitry1 #
12:15
я же и говорю, сделат таблицу macdb2, по внешнему виду 100% совпадающую с macdb, но содержащую MAC адреса устройств
filonov #
12:15
Dmitry1: а зачем тебе две одинаковых таблицы?
Dmitry1 #
12:16
наоборот, мне нужна только таблица с MAC адресами устройств
silver1 #
12:16
dvolodin: выше отписал про инити
Dmitry1 #
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 тысяч абонентов, но проблемы, с тем, что оборудование размещается в одной подсети с абонентами не исчезло
silver1 #
12:25
dvolodin: выпилено то будет, а вот нормально зарефакторено - нет
dvolodin #
12:26
Dmitry1: у ростелекома абонентов больше, чем у 500 мелких операторов
12:26
silver1: почему?
Dmitry1 #
12:27
dvolodin: и толку ? вот купил ростелеком сетку в каком-то городе, а там 20 тысяч абонентов на длинках
12:27
и что теперь ?
dvolodin #
12:27
В РТ запрещено покупать сети
12:27
уже года три как
12:27
и правильно
silver1 #
12:28
dvolodin: пока то что вижу похоже на спагетти код, я сам занимаюсь рефакторингом, и вот прикидываю, что выкидывать
Dmitry1 #
12:28
dvolodin: Дим, я не прошу все выкидывать. Я прошу только возможность управления всеми потрохами
dvolodin #
12:29
silver1: с какой целью рефакторинг?
Dmitry1 #
12:29
из-зп прибитых гвоздями хандлеров меня чуть не оштрафовали на деньги
dvolodin #
12:29
чуть не считается
12:29
опять же -- часть твоих проблем решается в микросервисах
Dmitry1 #
12:30
Дим, когда крадут субмагистральный коммутатор, то время замены его идет на секунды, И некогда в это время лазить в админку NOC и выключать/включать какие-то вещи
dvolodin #
12:31
опять организационная проблема
Dmitry1 #
12:31
т.е. воры должны предупредить заранее, что они своруют коммутатор ?
12:32
чтобы я успел отключить все джобы по данному коммутатору
dvolodin #
12:33
как тебе помешают job'ы на сворованные коммутаторы?
Dmitry1 #
12:34
ты представь себе ситуацию, монтажники по очереди втыкают и вытыкают SFP модули, и десятками плодятся джобы по проверке состояния портов
silver1 #
12:34
dvolodin: с целью того, ликвидации технеческого долга
dvolodin #
12:34
?
12:34
рефакторинг какой ветки?
silver1 #
12:34
dvolodin:* с целью ликвидации технического долга
dvolodin #
12:34
и каких модулей
silver1 #
12:35
всего проекта, целиком
evyscr #
12:35
dvolodin: лови программиста в свои тенета, пока не ушёл
dvolodin #
12:35
а смысл мероприятия, если не сеерет?
silver1 #
12:36
поддержка проекта
evyscr #
12:36
понижение порога вхождения
12:36
учёт регрессий
12:36
ликвидация явных ошибок
silver1 #
12:36
смысл в том, что если охота дальше заниматься 1 му, то окей
dvolodin #
12:36
примерно 170k строк кода с огромным количеством логики внутри
12:37
и я про это первый раз слышу
12:37
да еще про initi спрашивает ;)
Dmitry1 #
12:37
пока ценность имеют только профили SA и правила FM
12:37
это то, что привлекает народ
dvolodin #
12:37
мне уже даже интерсно :)
Dmitry1 #
12:38
уже готовая база для более 40 вендоров
12:38
это самя сильная часть NOC
dvolodin #
12:38
70 вендоров
12:38
:)
evyscr #
12:39
dvolodin: ты уже сделал отслеживание результата выполнения операций в монге?
dvolodin #
12:39
slowops?
Dmitry1 #
12:39
если уменьшить количество вендоров до одного, то никакой PM, IPAM и Inventory не нужен
dvolodin #
12:39
монга сама их писать умеет
evyscr #
12:39
другими словами, какого хрена ивенты проёбываются без малейшего звука?
12:40
(из алярмов, ай мин)
dvolodin #
12:40
evyscr: они точно не трутся как дубликаты?
12:40
и их не вытирает fm.archive?
evyscr #
12:40
ояе^Hзнаю?
12:41
в любом случае, такое поведение нока меня не слишком радует
silver1 #
12:42
если к проекту подходить, именно как к проекту, то я не вижу смысла мейнтейнить такое огромное кол-во кода, смысл в том, что проект полностью завязан на dvolodin, его такое положение вещей устраивает, мне внутренняя логика совсем не ясна, там
12:43
и я или собираю свой велосипед с нуля, или пытаюсь воспользоваться наработками, тк в ноке все же они есть
evyscr #
12:44
silver1: с итоге с ноком дешевле может оказаться собрать с нуля
12:44
(на сейчас)
silver1 #
12:45
тщательно поковырялся в кишках нока, и поковырылся в ряде других систем
Dmitry1 #
12:59
silver1: и каков результат ?
e_zombie #
13:11
silver1: NOC-1651
dvolodin #
13:18
teroni: да, я облажался
13:18
дочерние скрипты открывают свой коннект
13:18
сейчас поправлю
13:18
:)
filonov #
13:19
dvolodin: я тебе так сразу и сказал :)
Dmitry1 #
13:20
silver1: ping
dvolodin #
13:20
filonov: не сомневаюсь
Dmitry1 #
13:22
dvolodin: а скажи, навскидку, будет ли в микросервисах в активаторе разделение на те же ping, telnet, snmp, ssh ?
dvolodin #
13:22
???
Dmitry1 #
13:23
чтобы пингом не занимался активатор
13:24
как по мне, так расточительно по ресурсам запускать активатор, только для того, чтобы пропинговать MO
zi_rus #
13:25
Dmitry1: почему?
Dmitry1 #
13:25
опять же, если у MO нет ssh, зачем нам совершать лишние телодвижения ?
zi_rus #
13:25
по-моему разумно иметь один агент который ставится рядом с оборудованием и взаимодействует с ними
13:26
и делает все
13:26
пингует
13:26
телнетится
Dmitry1 #
13:26
и занимает гиг оперативы
zi_rus #
13:26
счетчики дергает
Dmitry1 #
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
dvolodin #
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
Dmitry1 #
13:27
ага, т.е. уже пинг и активатор - это разные процессы
zi_rus #
13:27
Dmitry1: это ты нок так доканал
dvolodin #
13:29
Dmitry1: и коллекторы syslog/snmp trap тоже отдельные
13:30
причем пинги и коллекторы свои для каждого пула
Dmitry1 #
13:31
уже лучше
13:31
а по FM
13:32
разделить классификатор и кореллятор
evyscr #
13:32
эм
13:33
они и сейчас разделены, не?
Dmitry1 #
13:33
у нас сейчас классификатор занимается кучей разного
13:34
хандлеры, триггеры, disposition
13:34
кореллятор так само
evyscr #
13:34
ох, ну так формулируй однозначно
Dmitry1 #
13:34
формулирую
evyscr #
13:35
сказал так, что предлагаешь отделить классификатор от коррелятора
Dmitry1 #
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
эту команду должен запускать не кореллятор
dvolodin #
13:40
нет, так не будет
13:40
классификатор тоже в пуле со своими железками
Dmitry1 #
13:40
повторюсь
dvolodin #
13:40
задача классификатора -- предварительная обработка событий и выделение потенциально аварийных
Dmitry1 #
13:40
(15:33:45) Dmitry: 50-80% ивентов "умрут" еще на этапе классификатора как "unknown" или просто "информационные"
13:40
вот
dvolodin #
13:41
задача коррелятора -- определение, что событие действительно аварийное и проведение RCA
Dmitry1 #
13:41
а "потенциально аварийные", а заодно те, для которых нужен iventtrigger, handler кто обрабатывать будет ?
13:42
задача классификатора - пометить, что это событие нуждается в дальнейшей обработке
13:42
этим ты наполовину снизишь нагрузку на обработчики
13:44
классификатор вообще не должен знать о таких вещах, как eventtrigger, handler и т.п.
13:45
ему хватает того, что он парсит мибы, коллекции и т.п.
dvolodin #
13:45
ну почему же
13:45
eventtrigger -- реакция на приход события
13:45
равно как и handler
Dmitry1 #
13:45
задача классификатора - пометить, что это событие нуждается в дальнейшей обработке
dvolodin #
13:45
да нет, не стоит
Dmitry1 #
13:46
Дим, не лепи монстра
dvolodin #
13:46
handler'ы легковесны
13:46
не лепи сущностей сверх меры
13:46
:)
Dmitry1 #
13:46
нисейчас никто кроме тебя не разбирается кв классификаторе и корелляторе
dvolodin #
13:46
классификатор работает с событиями, коррелятор с авариями
13:46
ты предлагаешь сделать еще один обработчик
Dmitry1 #
13:46
да
e_zombie #
13:46
а можно я пёзд в чатики вброшу чтобы прекратить бесполезный срач
Dmitry1 #
13:46
который будет посредине
dvolodin #
13:47
и считаешь, что после этого со всеми этими тремя монстрами все сразу разберутся
Dmitry1 #
13:47
и будет приниматть решение, нужно ли делать аварию из события, или нет
e_zombie #
13:47
https://pp.vk.me/c623422/v623422151/33bf8/3GmCO55X9is.jpg
Dmitry1 #
13:49
dvolodin: почему ? классификатор упростится до минимума
13:49
А промежуточное звено ничего не будет знать о коллекциях и мибах
dvolodin #
13:50
Dmitry1: код запуска триггеров и handler'ов в классификаторе - 10 строчек
13:50
:)
Dmitry1 #
13:50
да ?
13:51
функция load_triggers - 20 строчек
evyscr #
13:51
и содержала в себе баг, хехе
Dmitry1 #
13:51
load_link_actions
silver1 #
13:51
кстати вопрос, а зачем было делать два scheduler'a в виде legacy, если есть celery?
Dmitry1 #
13:52
load_handlers
13:52
resolve_handlers
13:52
продолжать ?
ss__ #
13:53
кусочек письки!
13:53
https://www.instagram.com/p/9_KR8qzQ0M/ теперь 3 компа и один ноут ))))
Dmitry1 #
13:53
Из всего - реально работать должны следующие условия:
13:54
if rule is None:
13:54
if rule.to_drop:
13:54
if rule.is_unknown_syslog:
13:55
и добавить условие, что обработка ушла следующему демону
dvolodin #
13:56
silver1: из celery плохой scheduler
13:56
точнее, celery вообще не scheduler
Dmitry1 #
13:57
dvolodin: Дим, я пытаюсь привлечь разработчиков, а для этого нужно предельно упростить код
silver1 #
13:58
dvolodin: а что насчет регулярных и отложенных тасков?
dvolodin #
13:58
ну смотри
13:58
scheduler NOC'а цепляется за монгу и ему ничего не надо
13:59
для celery - нужен эрланг, кролик, сами процессы celery
zi_rus #
13:59
что выпилить из нока? :)
13:59
http://forum.nag.ru/forum/index.php?showtopic=47185&view=findpost&p=1198908
chaotism #
13:59
поставил и забыл
13:59
причем во flower можно посмотреть как таск упал
13:59
а в скеджулере
14:00
я два дня прокопался
14:00
почему wipe кривой
14:00
потом батюшки очепятка в апи
14:00
и он просто игнорился
Dmitry1 #
14:01
dvolodin: я все-таки мечтаю, чтобы NOC научился как-то работать с ивентами, а не тупо поднимать по ним алармы
chaotism #
14:01
сделай обработку в post save
14:01
=)
Dmitry1 #
14:01
поэтому логику работы с уже распарсенными ивентами предлагаю вынести в отдельный демон
chaotism #
14:02
их и так коллектор, классификатор, который как раз работает с ивентами и коррелятор
Dmitry1 #
14:02
тогда классификатор 100% не будет лезть в базу
14:02
а промежуточный демон - в зависимости от настроек
14:02
увеличится скорость обработки ивентов на многопроцессорных системах
14:04
сделается более доступным для сторонних разработчиков код классификатора
evyscr #
14:04
ох
dvolodin #
14:05
Dmitry1: классификатор занимается обогащением событий
evyscr #
14:05
"более доступным" при "логика не ясна"
dvolodin #
14:05
как ему не лезть в базу?
Dmitry1 #
14:05
у нас при обработке ивента происходят следующие события
dvolodin #
14:06
chaotism: для этого нужен эрланг и кролик?
Dmitry1 #
14:06
1 - определить, какому ивентклассу принадлежит событие
14:06
2 - вытащить из ивента переменные
dvolodin #
14:06
или просто нормальная морда для просмотра статусов job'а?
Dmitry1 #
14:06
3 - отдать их вышестоящему демону
14:06
зачем туда засовывать триггеры, хандлеры и т.п. ?
14:07
и так, для того, чтобы распарсить ивент, мы должны полазить в коллекциях, подгрузить мибы и т.п.
chaotism #
14:08
dvolodin:вместо кролика можно использовать редис, вместо монги можно использовать редис, про ерланг суть проблемы в его установке?
e_zombie #
14:08
chaotism: оно есть в репах сентоси?
dvolodin #
14:08
chaotism: и в установке тоже
14:09
postgis нам в свое время крови вылакал ведро
Dmitry1 #
14:09
а вот вышестоящий демон должен посмотреть, что это за переменные, и в зависимости от этого или запустить хандлер, или пируле, или аларм, или джоб, или дропнуть ивент
zi_rus #
14:09
не вспоминайте про постгис
14:09
умоляю
dvolodin #
14:09
и его выпилили при первой же возможности, как spatial index появлился в монге
14:09
Dmitry1: а профит?
chaotism #
14:09
ну ок, по поводу ивентов, они же от классификатора к коррелятору, через scheduler идут, в в виде джоба
dvolodin #
14:10
chaotism: не совсем
Dmitry1 #
14:10
профит - классификатор никогда не лезет в базу. 10%
14:10
100%
zi_rus #
14:10
10%
14:10
Ж)
Dmitry1 #
14:10
а вот промежуточный демон может и полезет, если попадется хитрое правило
14:11
для этого, о чем я говорил вчера
chaotism #
14:11
я когда копался почему, пинги на карте имеют, отклонения по времени, просмотрел путь от sa до отрисовки
dvolodin #
14:11
передача через job -- рудимент
zi_rus #
14:11
job уже deprecated?
dvolodin #
14:11
который позволяет сказать коррелятору, что нужно повнимательнее посмотреть на событие
zi_rus #
14:11
я не успеваю за полетом мысли
Dmitry1 #
14:11
во время подгрузки коллекций, у правил должен выставляться "флажок", передавать ли ивент на обработку дальше, или тупо завершать его на самом классификаторе
dvolodin #
14:12
сам способ пинания коррелятора вполне обсуждаем
Dmitry1 #
14:13
dvolodin: т.е. ты предлагаешь ивенттриггеры и хандлеры засунуть в кореллятор ?
dvolodin #
14:13
начиная от простановки флажка - to_dispose в active event
Dmitry1 #
14:13
да
dvolodin #
14:13
и постоянного сканирования событий
Dmitry1 #
14:13
причем флажок проставляется в момент загрузки правил из базы
dvolodin #
14:13
заканчивая RPC-вызовом сервиса на корреляторе
Dmitry1 #
14:14
классификатор просто знает, отправлять событие дальше на обработку, или "похоронить"
14:14
он ничего не должен знать ни о каких RPC
dvolodin #
14:14
https://www.evernote.com/l/ADnFmsNT8rRIsYufpn9OF5cDvrseYpXgb08
14:15
собственно суть такая
14:15
убить коллекции noc.events.new и noc.events.failed
14:15
fmwriter пусть пишет события сразу с классом New
14:15
и классификатор выбирает их по классу
14:16
при обработке меняет класс на правильный и дописывает то, что нужно
evyscr #
14:16
dvolodin: тогда уж подумай, как сохранить бывший mo. Иметь его интерфейсы, но выбросить их из discovery
dvolodin #
14:16
evyscr: ?
evyscr #
14:16
объединили две железки в стек
14:17
neighbor discovery накрылся, вестимо
dvolodin #
14:17
и?
14:18
зафонтанировали идеями что-то
evyscr #
14:18
хочу сохранить историю mo
dvolodin #
14:18
хоть форум назад поднимай
evyscr #
14:18
поздно
14:18
TSergey уже ушёл
Dmitry1 #
14:19
dvolodin: в noc/fm/models eventclass.py имеет размер больше, чем alarmclass.py
14:19
хотя должно быть наоборот
zi_rus #
14:20
доебался до размера
Dmitry1 #
14:21
zi_rus: я имею ввиду, что классификатор выполняет работы больше, чем кореллятор
14:21
а должно быть наоборот
14:21
хотя я все-таки за то, чтобы добавить третьего демона
zi_rus #
14:22
микросервисы на вас плохо влияют
Dmitry1 #
14:22
потому как засовывать пируле в коррелятор тоже не правильно
zi_rus #
14:22
надо больше демонов
14:23
почему не сделать один демон
14:23
зачем эта порнография
dvolodin #
14:23
zi_rus: горизонтальной масштабирование
zi_rus #
14:23
коррелятор без классификатора нахрене не нужен
14:24
dvolodin: 10 одинаковых демонов
14:24
если хочешь
14:24
просто есть же зависимости
dvolodin #
14:24
zi_rus: нет, тут конвееризация обработки
zi_rus #
14:25
и потери производительности на переходах
dvolodin #
14:25
более длинный конвеер будет давать большую общую производительность, но вносить большую задержку
14:25
да, именно
14:25
смотри
14:26
пусть у нас overhead на RPC - 10%
14:26
и одно ядро
silver1 #
14:26
народ, я с деревни, я вот не понимаю в чем цимес noc-tower? почему это киллер фича?
zi_rus #
14:26
silver1: этого никто не знает
14:26
и не только об этом
14:26
ты еще workflow не видел
silver1 #
14:26
свой ansible-tower?
dvolodin #
14:26
silver1: в микросервисах много процессов и их правильно нужно настроить
14:27
и они расчитаны на большое количество нод
14:27
на первом этапе мне нужно, чтобы он спокойно переварил сотню нод
zi_rus #
14:27
в общем создать себе проблему, а потом героически ее решить
14:27
а то еще подумают что бездельник
14:27
и уволят
dvolodin #
14:27
первая проблема, которая возникает - service discovery
14:28
башня раскладывает сервисы по разным нодам и назначает им порты
14:28
и готовит статический файл конфига
14:28
и настраивает supervisord на нодах
14:28
сервисы после запуска сцепляются в нужную топологию
14:29
если не будет башни, то нужен либо свой механизм service discovery
Dmitry1 #
14:29
у меня пока одна нода. но мне нужна возможность управлять поведением FM
dvolodin #
14:29
либо встраивать его в демоны
evyscr #
14:29
Dmitry1: лолъ. Ты (как и я) не вписался в рынок
Dmitry1 #
14:29
если я не могу управлять классификатором и кореллятором, то нужно для каждого из них еще по одному демону
zi_rus #
14:29
Dmitry1: твоя проблема никого не бодает,
dvolodin #
14:29
Дим, одна нода едва тянет средний региональный филиал РТ
14:29
запаса почти нет
Dmitry1 #
14:30
дане важно
dvolodin #
14:30
итого первая задача башни - статичный service discovery
Dmitry1 #
14:30
важно то, что сейчас мы управлять классификатором не можем, потому что иначе он будет лезть в базу
dvolodin #
14:30
дальше -- уперлась нода в полку - добавляешь еще одну и скидываешь на нее часть сервисов
14:30
руками -- очень муторно
14:31
в башне выкладка делается в несколько кликов
silver1 #
14:31
т.е Нок у нас мониторит условно средний региональный филиал, и когда одна нода не справляется, нам надо раскатывать вторую?
dvolodin #
14:31
silver1: не совсем так
14:31
смотри
14:31
часть сервисов работают на уровне РФ
14:31
часть - на уровне макрорегионов
14:32
если ноде плохо -- действительно ставишь вторую рядом и скидываешь на нее сервисы
silver1 #
14:32
сейчас внесу ясность, просто, можно пример сервисов, насвкидку штук 5-6, чтобы я понял, что об одном и том же?
dvolodin #
14:32
ну и плюс в RPC встроен балансирощик
14:33
да, у меня схема есть
Dmitry1 #
14:33
я же и говорю, где-то 50% ивентов требуют дополнительной обработки
silver1 #
14:33
а можно глянуть плз
Dmitry1 #
14:33
почему бы не вынести обработчик за пределы классификатора ?
dvolodin #
14:34
да, сейчас выложу
silver1 #
14:35
dvolodin: так, это понял. (еще схему гляну) и готов дальше понимать в чем замысел noc-tower помимо того, что уже обсудили
dvolodin #
14:35
второй ее замысел -- мониторинг NOC
14:35
:)
14:35
чтобы в одном месте все видеть
silver1 #
14:36
понял, а в ноке что мониторим?
evyscr #
14:36
а я-то, по серости, думал, что надо оптимизацией кода заниматься...
Dmitry1 #
14:36
silver1: я себя тоже считаю программистом, но гланув на потроха NOC. прослезился, и понял, что ничего в этом не понимаю
silver1 #
14:36
evyscr: мне вот тоже так кажется
dvolodin #
14:37
https://www.dropbox.com/home?preview=NOC.pdf
silver1 #
14:37
Dmitry1: да там ада много
dvolodin #
14:38
silver1: каждый сервис содержит встроенный мониторинг, доступный по URL /mon/
Dmitry1 #
14:38
или я в объектно ориентированном программировании ничего не понимаю, или это какая-то специфика NOC
evyscr #
14:38
both
e_zombie #
14:38
с последним коммитом в девелоп http://imgur.com/e5N7936
evyscr #
14:39
забавно
14:39
а у меня без него недосчитывает
14:39
локальные патчи есть?
dvolodin #
14:40
silver1: открылась схема?
silver1 #
14:40
dvolodin: не вижу по ссылке, у меня просто в домашную папку
dvolodin #
14:40
https://www.dropbox.com/s/qknax40s1zc9uqb/NOC.pdf?dl=0
14:40
вот так
evyscr #
14:41
e_zombie: слышь, тебя спрашиваю же
Dmitry1 #
14:41
насколько я читал Кнутта, так ООП специально создано, чтобы избавиться от записей вида "alarm.managed_object.object_profile.down_severity"
e_zombie #
14:41
чё на ?
evyscr #
14:41
17:37:55 < evyscr> локальные патчи есть?
e_zombie #
14:42
парчей нет. есть наброски для профилей .
dvolodin #
14:42
Dmitry1: кнут не писал про ООП
e_zombie #
14:42
для дсламов хуавеев
dvolodin #
14:42
:)
Dmitry1 #
14:42
ну не знаю
dvolodin #
14:43
ООП 70-х, это smalltalk
evyscr #
14:43
e_zombie: тогда надо смотреть в монгу
Dmitry1 #
14:43
для SA как-то получилось все методы засунуть в объект NOCProfile ?
14:44
и как итог - куча контрибуторов
14:45
и то, у нас два обхекта NOCProfile и NOCScript
14:46
и народ теряется
chaotism #
14:46
давайте добавим монады?
Dmitry1 #
14:46
опять же, хорошо документированные интерфейсы с примерами
dvolodin #
14:46
ты предлагаешь объединить классы Кошка и Собака в мегакласс Котопес
14:46
я не против, но где же жопа?
Dmitry1 #
14:46
да, потому как у них 99% общего
dvolodin #
14:46
да
chaotism #
14:46
под систему с нодами и портами docker
dvolodin #
14:47
в твоей логике у них общее - отсутсвие жопы
Dmitry1 #
14:47
я уже пару лет предлагал объединить в один класс хандлер, триггер, джоб, солюшн
14:47
и у нас появилась еще пятая сущность - action
14:48
я же писал, что криво сейчас
14:48
хандлеры запускаются только из FM
14:48
actions только из PM
14:48
джобы только из Inventory
14:49
хотя 90% кода там общего
evyscr #
14:49
e_zombie: сделай 'hg status fm/apps/reportoutages/views.py'
Dmitry1 #
14:49
и панельку управления тогда прийдется писать одну, а не пять штук
e_zombie #
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]#
Dmitry1 #
14:50
и запускать сможем из любого места NOC, а не из того, где прибито гвоздями
evyscr #
14:50
а петон какой?
Dmitry1 #
14:50
dvolodin: расскажи, в чем я не прав
14:52
Для FM у нас тогда вызов disposition, handlers или pyrule будет абсолютно прозрачным
14:52
Аналогично, для инвентори
14:53
и IPAM
evyscr #
14:53
e_zombie: ещё в монге сделай db.noc.fm.outages.find({"object": ID}), где ID - id верхнего mo
Dmitry1 #
14:54
dvolodin: ты сейчас затачиваешь свои методы под конкретные задачи. но как только задачи чуть-чуть поменяются - вылазят проблемы
14:54
я же предлагал с самого начала разработать механизм RPC
14:55
в FM он уже частично есть, когда от классификатора кореллятору передается список переменных и их значение
e_zombie #
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
вот подозрительная запись
Dmitry1 #
14:57
dvolodin: теперь ты пытаешься изобрести новый механизм в PM, называя его action
e_zombie #
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
evyscr: http://pastebin.com/kLVwLErM
14:58
это не всё
Dmitry1 #
14:58
хотя это все тот же RPC
dvolodin #
14:59
вот тебя унесло
14:59
action -- типизированный сниппет
15:00
точнее -- возможность дать группе сниппетов осмысленное название
Dmitry1 #
15:00
а хандлер ?
15:00
а пируле ?
15:00
а джоб ?
15:00
а солюшн ?
dvolodin #
15:00
и выбирать правильный вариант команд для достижения одного и того же результата для разных железок
Dmitry1 #
15:00
те же яйца, только сбоку
dvolodin #
15:01
handler - хочешь, назови его плагином
Dmitry1 #
15:01
у меня дебильный вопрос: почему я не могу вызвать action из FM, а только из PM ?
15:01
а ханлер только из FM, но не могу из PM ?
evyscr #
15:02
e_zombie: по идее, у тебя там могут быть две незакрытые записи
e_zombie #
15:02
у меня аварий по этой железке нету.
Dmitry1 #
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 ?
e_zombie #
15:03
походу ещё одно добавление в noc fix на проверку валидности этой таблицы.
Dmitry1 #
15:03
я реально, столько не выпью, чтобы понять эту логику
dvolodin #
15:04
где ты увидел action в pm?
15:04
он в SA
15:04
:)
e_zombie #
15:04
evyscr: ха. а оно в дауне.
Dmitry1 #
15:05
сорри
evyscr #
15:06
e_zombie: сделай db.noc.fm.outages.find({"object": 91140, "stop": null})
e_zombie #
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
>
evyscr #
15:06
ну вот
Dmitry1 #
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 %}
e_zombie #
15:07
алярвы в архиве с дауном этой железки. уже как 28 дней
evyscr #
15:07
e_zombie: патч правильный, данные в таблице поломаны
dvolodin #
15:07
Dmitry1: зачем есть шаблоны, когда можно кодом сгенерить строки
Dmitry1 #
15:07
если у нас есть скртипт sa/profiles/Cisco/IOS/ping.py
dvolodin #
15:07
cgi рулит
e_zombie #
15:07
evyscr: значит это надо в noc fix вкрчивать
evyscr #
15:08
а хрен его знает, как его правильно фиксить
15:08
надо придумывать какой-то "stop" date
Dmitry1 #
15:08
я имел ввиду "action command", который зачем то дублирует скрипты SA, но при этом теряет 90% их функционала
e_zombie #
15:08
на 1 секунду больше и всё
dvolodin #
15:09
там нет stop'а?
15:09
или что?
evyscr #
15:09
да
15:09
в двух записях
dvolodin #
15:09
то есть не null, а посто нет?
evyscr #
15:09
угу
e_zombie #
15:09
{ "_id" : ObjectId("56136a5c989fcf36ab9f3e85"), "object" : 91140, "start" : ISODate("2015-10-06T09:29:48.477Z") }
evyscr #
15:10
null - это аналог $exists: false
Dmitry1 #
15:10
dvolodin: смотри, сам "action" в SA вроде как нормально задуман. Есть скрипт, есть переменные, которые ему передаются
evyscr #
15:10
точнее, включает в себя
e_zombie #
15:10
подозреваю что такая же поебень и для ребутов будет
Dmitry1 #
15:10
добавить еще возможность принимать переменные
15:11
и готовая обертка для хандлеров, джобов, солюшенов, триггеров
evyscr #
15:11
e_zombie: не, ребуты были пофикшены раньше
15:11
я ж возмущался-)
Dmitry1 #
15:11
dvolodin: как тебе такой вариант ?
e_zombie #
15:12
ну если впилить это в фикс то не прийдётся лопать ть другие куски кода.
Dmitry1 #
15:12
А вместо "action command" будешь запускать реальные триггеры, хандлеры и т.а.
e_zombie #
15:12
это много где вылезти может .
evyscr #
15:12
придётся-придётся
15:13
e_zombie: в общем, если ты сдавал отчёты руководству - ты его слегка обманывал
e_zombie #
15:13
всем охуй (с)
evyscr #
15:13
тож верно
15:14
здесь на них только я смотрю иногда
e_zombie #
15:14
я строил отчёты по ошибкам на портах эзернет для области. народ начал по ним работать только когда начался массовый отток и мрф вломила пиздов по первое число.
Dmitry1 #
15:15
блин, потратил три часа времени, но Дима остался при своем мнении
e_zombie #
15:15
мысль вечна.
15:15
вернее идея.
Dmitry1 #
15:16
e_zombie: давай пиписьки пость
evyscr #
15:16
... и достал бутыль горилки
e_zombie #
15:16
ты просрал этот момент. я пиписьки утром выкладывал и одну вечером
15:16
но специально для тебя повторю
Dmitry1 #
15:16
Я уже два года пытаюсь доказать Диме, что он должен писать NOC не для себя, а для народа
e_zombie #
15:17
https://pp.vk.me/c623422/v623422151/33c02/o7yx8DmX-Pk.jpg
15:17
https://pp.vk.me/c623422/v623422151/33bf8/3GmCO55X9is.jpg
evyscr #
15:17
Dmitry1: это можно доказать только деньгами
e_zombie #
15:17
ну и экслюзив https://pp.vk.me/c623422/v623422151/33ae8/UpoxkllpKwI.jpg
Dmitry1 #
15:17
Ааааа ! волосатая !!!!
e_zombie #
15:17
ну и если не видел https://pp.vk.me/c629313/v629313151/20608/2U2xx4W8hRw.jpg
15:18
спакуха. это без ретуши.
15:18
только вчера отснял. не ббыло времени ретачить. только отконвертил.
Dmitry1 #
15:19
evyscr: народ готов платить, но их отпугивает то, что им прийдется кроме всего прочего у себя содержать на полную ставку программиста на питоне, а также специалиста по mongodb и postgresql
e_zombie #
15:20
одного программера достаточно .
evyscr #
15:20
питон + js
e_zombie #
15:20
не так уж и большой объём работ
Dmitry1 #
15:21
т.е. ты предлагаешь провайдеру на 500 абонентов нанимать себе на полный день программиста на питоне ?
evyscr #
15:21
платить dvolodin напрямую
e_zombie #
15:21
нахуя ? тольковый прогер напишет профиля и поправит кривые места в течении двух месяцев. плюс два месяца на тестирование с админом конторы.
Dmitry1 #
15:22
e_zombie: потому как в том же FM чуть ли не в зависимости от фазы луны должна быть разная реакция на события
15:23
А у димы один ответ - пишите хандлеры и солюшены на питоне
evyscr #
15:23
не хотите писать - заплатите тому, кто напишет
15:24
начиная с определённой суммы dvolodin, подозреваю, выполнит любые пожелания
Dmitry1 #
15:24
evyscr: я про то, что сегодня мне надо, к примеру, подавить это событие, а завтра я поменял коммутатор, и мне не нужно это
evyscr #
15:25
это даже не питон, а regexp
15:26
у меня вполне успешно живёт в ignore event rules
Dmitry1 #
15:26
какой регексп ? прям в хандоере ? а ничего, что хандлер написан на питоне ?
evyscr #
15:27
"подавить событие" && "хэндлер"?
Dmitry1 #
15:53
да
15:54
а еще какой-то способ есть ?
15:54
написать pyrule на том же питоне ?
15:54
или написать солюшн на том же питоне
Tweet
Share this page
Share this page: Tweet