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: 13.11.2015
dvolodin #
05:51
teroni: пофиксил вчерашний косяк с ssh
05:51
попробуй
05:51
и еще в ./noc script появился ключик --without-snmp
teroni #
05:51
dvolodin: ты добавил новый
dvolodin #
05:51
какой?
teroni #
05:52
ImportError: No module named jinja2
dvolodin #
05:53
это я давно уже запушил
05:53
обновись
05:54
и утечку файлов на snmp пофиксил
teroni #
05:59
ничего не давно
05:59
Dmitry Volodin committed b94ad72
05:59
9 hours ago
dvolodin #
06:03
:))))
06:03
попробовал?
06:05
работает?
teroni #
06:05
конечно
06:05
не работает
06:05
не деплоится
dvolodin #
06:07
почему?
teroni #
06:07
ImportError: No module named jinja2
06:07
http://pastebin.com/t0ftKcxR
dvolodin #
06:12
а pip до этого зависимости не устанавливает?
teroni #
06:13
нет
06:13
установил-бы не ругался
dvolodin #
06:13
блин
06:13
ступил
06:14
лови
06:14
оно в старом файле было
06:14
:)
teroni #
06:15
не вижу коммита
dvolodin #
06:18
лови
teroni #
06:20
теперь работает
06:21
вооо интерфейсы нашел
06:21
и с линковалось
dvolodin #
06:21
одну ssh-сессию открывает?
06:23
и полинковалось по cdp?
ufir #
06:25
я написал на питоне скрипт
06:25
и он заработал
06:25
я нихера не знаю питон
06:25
я герой
dvolodin #
06:26
ufir: я написал на питоне NOC, я нихера не знаю питон и не умею писать программы
06:26
:)
06:27
зато я умею пидорасить гоблинов
06:27
:)
06:27
ладно, не надо о грусном
ufir #
06:27
ну это уже из серии "да я, Петька, и постарше тебя буду" (С) анекдот про чапаева
dvolodin #
06:27
:)
06:27
сегодня пятница, 13
06:28
и микросервисы слинковали первый линк не у меня
06:28
:)
ufir #
06:28
а меня в НН тут отправляют в командировку
teroni #
06:28
линк по cdp - да
ufir #
06:28
какие-то блусокетские вайфаи изучать
dvolodin #
06:28
teroni: а LLDP у тебя там есть?
06:28
ufir: ааааа
06:28
я смотрел синее дупло
06:28
и они к нам в понедельник приезжают
06:29
затребовал с них доработки контроллера
teroni #
06:29
сессия ссх - вроде одна
dvolodin #
06:29
если честно - мне не понравилось, гнилая платформа
ufir #
06:30
dvolodin я у них уже багов-дыр нашел пачку..
dvolodin #
06:30
да
ufir #
06:30
отписался, реакция нулевая
teroni #
06:30
ллдп выключен
dvolodin #
06:30
самый финиш -- если при вызове метода API возникает ошибка
06:30
эта скотина возвращает HTTP 200
06:30
302, пардо
06:30
а в Location стоит
ufir #
06:30
да и самаа концепция vwlan-контроллера в виде апплайнса для вмтвари - сомнительна
dvolodin #
06:30
Location: &error=blablabla
06:31
даже я себе такого не позволяю
ufir #
06:31
в саратове пытаются это завести под kvm
dvolodin #
06:31
да не
06:31
тут два подхода
06:31
относительно тупая точка
06:31
которая цепляется по GRE/IPSEC за контроллер и гонит трафик
06:32
а контролер его коммутирует и рулит роумингом
06:32
либо софтовый контроллер, который только рулит роумингом и авторизацией
ufir #
06:32
но бывает, что клиентос на точке висит - получает айпи, а на брасе сессий нет
dvolodin #
06:32
и жутко умные точки, которых контроллер случает между собой
ufir #
06:32
перевключение вайфая решает проблему
06:33
я за тупые точки ;)
dvolodin #
06:33
первый подход -- Aruba, Ruscus ZoneDirector
ufir #
06:33
прицепил - и забыл/забил
dvolodin #
06:33
второй - синее дупло, unifi, частично ruckus smartzone
06:33
у нас в МРФ есть все
06:34
первая группа работает как часы и я про нее не вспоминаю
06:34
вторая - вечно ключик
06:34
классика жанра от unifi
06:34
выкинуть клиента на hotspot
06:34
и не успеть себе в монгу его прописать
06:34
hotspot успевает прибежать к контроллеру и спросить, что же за перец пришел
06:34
и получить ответ - что такого в природе нет
06:35
bluesocket - аналогично
ufir #
06:35
с цисками проблем небыло, их сраные wlc до сих пор работают и не жужжат
dvolodin #
06:35
очень хорошо работает аруба
06:36
но она очень гибкая и завести ее непросто
ufir #
06:36
еще нам прислали гпон-агрегатор елтекс, и терминалы хуавей. и они не заводятся ;)
dvolodin #
06:36
ruckus zd -- наоборот туп как пробка, но у них хорошее радио у точек
06:36
wlc - работает, да, но там дерьмовый radius api
06:37
запрашивать информацию с контроллера через RADIUS CoA -- это они ебанулись
ufir #
06:37
да-да, помню тоже долго удивлялись с этого
dvolodin #
06:38
я, наверное, все, что на рынке есть у нас перелопатил за год
06:38
включая DCN
ufir #
06:38
а ето что такое
dvolodin #
06:38
и у нас в Москве офигительная платформа для SMS-авторизации получилась
06:38
у вас под УЦН ратеки, значит
ufir #
06:38
дада
dvolodin #
06:38
в другой половине РТ - DCN
ufir #
06:38
и КЦ
06:39
которое блядь адресный план согласовать не может
06:39
то у них количество точек разное
06:39
то подсети не совпадают
dvolodin #
06:39
надо помочь КЦ-шникам IPAM поднять, наверное
06:39
я уже фигею с этого бардака :)
ufir #
06:40
да там вообще жесть какая-то
dvolodin #
06:40
это при том, что я в ИТ и к ТБ имею номинальное отношение
MindGames #
07:07
привет! Кто тут линукс программер? Помогите с одной проблемкой.
07:07
я передаю параметры скрипту. а в скрипте присваиваю их переменным
07:08
все хорошо, но как только я присваюваю 9 переменных - дальше начинается проблема.. 10ю переменную присвоить не могу. он видит только первую цифру 1 а 0 не видит. и присваивает 10й переменной параметр, который передан 1й скрипту
07:08
если словами не понятно - могу код скинуть
07:10
вот что увидел: Но shell не поддерживает больше 9 параметров, если не использовать оператор shift,
07:10
как этот оператор использовать?
Dmitry1 #
07:10
хоть мявкни, шо за шелл
07:11
sh, zhs, csh, bash
aef__ #
07:13
MindGames: использовать просто echo $1; shift; echo $1 ; shift
e_zombie #
07:13
,,
MindGames #
07:13
bash
aef__ #
07:14
MindGames: use sh, Luke. Сбережешь себе немного кармы
MindGames #
07:15
aef__, я бы с радостью. но программа не моя. я лишь пытаюсь её заставить работать так, как я хочу. боюсь, если я поменяю на #!/bin/sh, то поломаю всю систему
07:15
скрипт вот такой (надеюсь. не заблочат за спам)
07:15
#!/bin/bash
07:15
## переменные на входе nas_ip login pass abon_ip vlan
07:15
nas_ip=$1
07:15
login=$2
07:15
pass=$3
07:15
vlan=$4
07:15
rate_in=$5
07:15
rate_out=$6
07:15
burst_in=$7
07:15
cburst_in=$8
07:15
burst_out=$9
07:15
cburst_out=$10
07:15
ABON_ETHERNET='Gi0/2'
07:15
command="\n
07:15
conf t\n
07:15
int ${ABON_ETHERNET}.${vlan}\n
07:15
rate-limit input ${rate_in}000 ${burst_in}000 ${cburst_in}000 conform-action transmit exceed-action drop\n
07:15
rate-limit output ${rate_out}000 ${burst_out}000 ${cburst_out}000 conform-action transmit exceed-action drop\n
07:15
end\nexit\n"
07:15
echo -e $command | ssh_send -t ssh ${login}@${nas_ip} --pass ${pass}
07:15
вот куда мне shift подставить? :)
aef__ #
07:17
после каждого присваивания и поставь. и все $x меняешь на $1
e_zombie #
07:19
MindGames: http://gnu.su/news.php?extend.1613
07:19
# используйте $@ для вывода сразу всех аргументов echo $@ ' -> echo $@'
Dmitry1 #
07:20
for _i in $@ ; do
MindGames #
07:20
я попробую shift использовать.
aef__ #
07:20
Dmitry1: можно проще for _i ; do
MindGames #
07:22
хм.. тоже вариант. правда, пока плохо представляю, как это написать правильно.
Dmitry1 #
07:23
я бы соверовал пеервести скрипт на перл
e_zombie #
07:24
MindGames: попробуй конструкцию read -r address snmp_ro profile_name name <<< "$line"
07:24
07:24
так у тебя это всё в одну строчку получится .
aef__ #
07:24
Башзмы зло
MindGames #
07:27
Dmitry1, это долбанный CarbonBilling написанный студентами на коленке. Себе на голову мы внедрили её у себя. потому я не могу там что-то переписать. я их долбаю, чтобы они подправили код под меня. но они не хотят ни чего делать. вот я сам пилю
07:27
коллеги, спасибо, помог shift.
Dmitry1 #
07:28
на перле перепиши
MindGames #
07:28
e_zombie, в смысле этой строчкой можно сразу именам переменных присвоить значения? круто
07:28
Dmitry1, ну я не буду чужой софт переписывать ;) после обновления слетит. хотя, чую, придется до этого дойти.
aef__ #
07:29
MindGames: http://pastebin.com/V3e2tjM6
Dmitry1 #
07:29
на перле бы выглядело так:
07:30
($varA, $varB, $varc) = split (@ARGV);
aef__ #
07:31
MindGames: хотя нет - вот так http://pastebin.com/S2fmGDpK
07:32
заодно поток команд человеческий
07:33
От перла тут полезно только развертывание массива параметров в переменные, ergo perl нинужын
Dmitry1 #
07:33
даже на перле проще
07:33
my ($name, $number) = @ARGV;
07:34
все в одну строчку
aef__ #
07:34
зато скармливание текста на вход программы - чуть сложнее
Dmitry1 #
07:37
на перле ?
aef__ #
07:37
Ага
Dmitry1 #
07:38
system("bla-bla");
aef__ #
07:39
system не позволяет управлять in/out
Dmitry1 #
07:39
ась ?
07:40
вот кусов из моего биллинга:
aef__ #
07:40
Шо ась? Ты собрался использовать перл только для генерации sh-ного говнокода?
Dmitry1 #
07:41
system("echo \"User-Name:='$caller', ERX-Service-Activate:1 += 'dyn-policing-ipoe(".$speed_out."000)'\" | /usr/local/bin/radclient 10.110.0.3:3799 coa 123qwe >/dev/null 2>&1");
aef__ #
07:41
Для студента на испытательном сойдет. Но следом идет требование сделать по человечески
Dmitry1 #
07:42
приведи пример ? чем не нравится вызов system() ?
aef__ #
07:42
из perl-а получается очень неудобный sh
07:42
Dmitry1: тем что тут перл вообще не нужен
07:44
cat << EOF | radclient -x $nas_id:$port coa blablabla
07:44
User-Password = "cisco"
07:44
User-Name = "$uid"
07:44
Cisco-Account-Info=S$uid
07:44
Service-Type = Outbound-User
07:44
cisco-avpair="subscriber:command=account-logoff"
07:44
NAS-IP-Address = $nas_id
07:44
EOF
07:44
sh читабельнее и работает быстрее
Dmitry1 #
07:45
у меня в перолвском скрипте еще обращение к базе данных
zi_rus #
07:46
ахаххаха, dvolodin ИТшник, ахахахах
dvolodin #
07:47
zi_rus: ага
zi_rus #
07:47
какой позор
dvolodin #
07:48
перед пенсией пойду работать мамочкой в борделе
aef__ #
07:48
Dmitry1: Это не повод писать нечитабельные кракозябры
dvolodin #
07:48
zi_rus: да мне пофиг в общем-то
07:49
кто-то должен же думать за техблок
Dmitry1 #
07:49
aef__: мне важен был размер файла. чтобы закешировался файловой системой
aef__ #
07:52
Dmitry1: сам понял что сказал?
Dmitry1 #
07:52
я то понял. а что не так ?
07:53
кеш файловой системы кеширует блоки определенного размера
aef__ #
07:53
Да ты чо, правда что ли?
Dmitry1 #
07:54
или по твоему hardlink'и придумали для красоты ?
aef__ #
07:54
ой как все запущено....
Dmitry1 #
07:56
я подозреваю, что у тебя бесконечно памяти, процессор на 100000 мегагерц, безразмерный винчестер на 100000000 тысяч оборотов
aef__ #
07:56
еще у меня бузина в огороде
Dmitry1 #
07:58
наверное, ты никогда не строил встраиваемые системы
aef__ #
07:58
Dmitry1: какая связь между работой перла, кешем диска , хардлинками и бесконечной памятью?
Dmitry1 #
07:59
связь в том, что я стараюсь минимизировать количество чтений/записей на диск. зачем - это мое дело
07:59
соответсвенно все, что работает, запихнуто в память
08:00
поэтому скрипты в угоду меньшего размера лишены читабельности
aef__ #
08:00
За минимизацию io путем замены sh на perl обычно принято увольнять
08:01
да, про биллинг на встраиваемых системах я тоже с удовольствием послушаю
Dmitry1 #
08:02
ах да, я забыл, что у вас линуксы
08:02
когда системные и пользовательские программы находятся в перемешку в одном каталоге
aef__ #
08:03
Dmitry1: так, стоять, бояться. с темы не спрыгивать
Dmitry1 #
08:03
что тут не понятного ? у меня /usr/local находится в памяти
08:04
память не резиновая
iZverg #
08:04
Dmitry1: o_O
Dmitry1 #
08:04
поэтому стараюсь экономить
aef__ #
08:04
Dmitry1: давай, рассказывай уже, как замена sh на perl-овый system() экономит диск
iZverg #
08:04
Dmitry1: O_o
aef__ #
08:04
iZverg: не спугни
Dmitry1 #
08:04
блииин
08:05
sh находится на флешке
08:05
/usr/local/bin/perl - в памяти
aef__ #
08:06
Да ты чо, правда что ли?
Dmitry1 #
08:06
да
MindGames #
08:06
кто-то тут постит фотки девушек по пятницам? :) Можно сегодня я так сделаю? :)
Dmitry1 #
08:06
а что не так ?
MindGames #
08:06
пятничная фотка: http://cs624516.vk.me/v624516226/4cf80/Fr-q5ZiaD6U.jpg
aef__ #
08:07
Dmitry1: т.е. биллинг у тебя живет на флешке?
Dmitry1 #
08:07
на флешке находится образ файловой системы /usr/local, который разворачивается в память
aef__ #
08:08
Т.е. 140К sh в память засунуть никак нельзя, а несколько десятков мегов перлятины можно?
Dmitry1 #
08:08
aef__: кто сказал биллинг ? я же выше писал, что в перловском скрипте у меня обращение к базе mysql
aef__ #
08:09
Dmitry1: ты и сказал - биллинг. "10:38 <Dmitry1> вот кусов из моего биллинга:"
Dmitry1 #
08:09
aef__: познай разницу /usr/bin и /usr/local/bin
aef__ #
08:09
У нас все ходы записаны
Dmitry1 #
08:09
биллинг живет вбазе данных
08:10
а это что-то между сервером авторизации и роутером
e_zombie #
08:10
MindGames: твою мать. я плохо спать теперь буду
MindGames #
08:11
простите :))
08:11
сам чуть не блеванул ;)
08:11
решил поделиться ;)
e_zombie #
08:12
https://pp.vk.me/c628524/v628524151/1a3f2/dU-66Gfb8mM.jpg вот так надо в пятницу.
aef__ #
08:12
Dmitry1: какое отношение разница между /usr/bin и /usr/local/bin имеет к размеру /bin/sh?
Dmitry1 #
08:12
во freebsd статически монтируется только каталог /usr
08:13
а /usr/local можно монтировать из другого места, например NFS
aef__ #
08:13
Dmitry1: ты не юли. ты на простой вопрос ответь:
Dmitry1 #
08:13
блииин, это же основа юникса
08:14
для работы операционки не нужен каталог /usr/local
aef__ #
08:14
чем 140К /bin/sh хуже чем десятки мегов перлятины?
Dmitry1 #
08:14
он монтируется по запросу
aef__ #
08:14
Да ты шо?
Dmitry1 #
08:14
мне удобнее /usr/local держать в отдельном образе, и монтировать его в память
aef__ #
08:15
"Сдуру можно много чего сломать" (c) RU.OS.CMP FAQ
Dmitry1 #
08:15
вместе с перлом, библиотекой libmysql и т.п.
08:16
aef__: ты точно не понимаешь разницу между /usr/bin и /usr/local/bin ?
aef__ #
08:16
Dmitry1: нет никакой разницы. И ложки тоже
e_zombie #
08:16
можете глянуть на саратовских красавиц https://vk.com/album-41946261_224003502
aef__ #
08:17
Dmitry1: если ты не умеешь сделать отдельный /usr/bin для embedded -системы - это сугубо твои проблемы
Dmitry1 #
08:18
Historically and strictly according to the standard, /usr/local/ is for data that must be stored on the local host (as opposed to /usr/, which may be mounted across a network). Most of the time /usr/local/ is used for installing software/data that are not part of the standard operating system distribution (in such case, /usr/ would only contain software/data that are part of the standard operating system distribution). It is possible that the FHS stan
08:19
http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#USRLOCALLOCALHIERARCHY
aef__ #
08:21
Dmitry1: возвращаемся к вопросу - чем 140К /bin/sh хуже чем десятки мегов перлятины?
Dmitry1 #
08:22
1 - тем, что /bin/sh не умеет обращаться к mysql
aef__ #
08:22
Dmitry1: ты не поверишь, но перл тоже не умеет
Dmitry1 #
08:22
2 - обновление /usr/local проходит независимо от обновления системы
aef__ #
08:22
2 - в огороде бузина
Dmitry1 #
08:23
$sth = $dbh->prepare('SELECT `UserName` FROM accounting_tmp WHERE `local_ip`=? ORDER BY `last_date` DESC LIMIT 1');
aef__ #
08:25
Dmitry1: у тебя поразительный талант делать реплики без попыток логической связи между ними
Dmitry1 #
08:25
aef__: это не линукс
08:25
во freebsd четко разделена базовая часть системы и пользовательская
aef__ #
08:25
Dmitry1: вьюноша, ваша линуксофобия понятна, но кроме вас его никто не упоминал
08:26
140К - размер /bin/sh на 10.1
Dmitry1 #
08:26
как из него мне обратиться к mysql ?
aef__ #
08:26
Dmitry1: man mysql, да,
Dmitry1 #
08:27
я же вверху пример запроса привел
08:28
или CLI mysql уже научился делать prepeared statement ?
aef__ #
08:29
Потребность в prepared statement тут неочевидна. Как собственно и неочевидна необходимость работы с mysql напрямую из embedded системы
dvolodin #
08:30
вот у вас жизнь бурлит, блин
aef__ #
08:31
dvolodin: пятница же. Сижу вот, удовольствие получаю)
dvolodin #
08:31
MindGames: давай твою красотку посадим на failed login
MindGames #
08:32
dvolodin, мууухахаха!! Шикарная идея!!! После такого точно ни кто не захочет логинииться :)
aef__ #
08:32
dvolodin: это бесчеловечно. Вдруг человек просто забыл капслок отжать
MindGames #
08:32
или на 404 ошибку
dvolodin #
08:32
aef__: в следующий раз не забудет
Dmitry1 #
08:32
а че мое тогда предложение похерили картинку на link down поцепить ?
dvolodin #
08:33
Dmitry1: noc у тебя тоже в tmpfs?
aef__ #
08:33
dvolodin: злой ты)
Dmitry1 #
08:33
нет, у меня /var в mfs и /tmp в tmpfs
08:33
это разные файловые системы
dvolodin #
08:34
var с базами в памяти?
Dmitry1 #
08:35
на той машине нету баз
zi_rus #
08:35
dvolodin: он тогда вообще все забудет
Dmitry1 #
08:35
noc у меня на древней машинке, где старый ssh
dvolodin #
08:36
в монге 3.2 есть in-memory db
Dmitry1 #
08:36
иначе я не могу попасть на некоторые старые свичи по ssh
08:37
сейчас нужно или переводить все железки с ssh на telnet, или делать где-то машинку с древним ssh
08:39
dvolodin: давай лучше про классификатор поговорим
dvolodin #
08:39
Dmitry1: можно я не буду реализовывать ssh v1.5 за спасибо
08:39
:)
08:39
оно того просто не стоит
08:40
teroni: asset discovery у тебя заработал?
08:40
еще какие ошибки вылезли?
08:42
Dmitry1: чего о нем говорить
08:42
там даром что речь может идти про предклассификатор
08:43
который будет жить где-то рядом с коллектором и лопатить регулярки
08:43
но я пока не очень хочу так делать
08:43
выгода призрачная
08:44
и при малом количестве нод будет только хуже
teroni #
08:46
get_capabilities - падает
08:46
http://pastebin.com/RRQi0gZ6
08:47
asset discovery - это где?
dvolodin #
08:54
в box
08:54
asset
aef__ #
08:57
dvolodin: посмотрил плиз https://kb.nocproject.org/pages/viewpage.action?pageId=20152612 там в конце рецептик
08:57
оно конечно работает но нет ли чего помягче?
evyscr #
09:01
aef__: нахера?
aef__ #
09:01
evyscr: да нарывался вчера - discovery уходили в suspend на ровном месте
evyscr #
09:02
лечение какое-то неправильное
aef__ #
09:02
Ну да. Ампутировать все и отрастить заново. Я почему и спрашиваю - вдруг чего помягче есть
evyscr #
09:04
поменять статус кому надо
aef__ #
09:04
evyscr: не помогало
evyscr #
09:05
значит, другая проблема
aef__ #
09:05
статус менял. mo-profile тоже
evyscr #
09:05
предложение вообще вредное, каким чудом помогло - хз
09:05
статус чего? джоба?
teroni #
09:05
asset в логах что-то хорошее говорит
09:05
а как нить креши прочитать в удобоваримом виде можно?
aef__ #
09:06
Нет, объекта
evyscr #
09:06
а я про джоб
09:06
см. напр. reset_deferred или как-то так
aef__ #
09:06
evyscr: тут интерфейс ничуть не лучше
09:07
Плюс есть проблема с disabled-jobами
Dmitry1 #
09:08
dvolodin: регулярки нужно парсить
09:08
нужно, чтобы конечный пользователь, потыкав мышкой мог настроить поведение классификатора и кореллятора
dvolodin #
09:09
а сейчас он не мышкой?
Dmitry1 #
09:10
если у нас классификатор не будет запускать хандлеры, пируле и disposition, то его и не нужно будет настраивать
09:10
сейчас я не могу мышкой сделать, чтобы аларм запускался только при исполнении какого-то условия
09:12
уже разделили, классификатор в базу не лезет, а кореллятор в базу лезет
09:12
теперь бы сделать, чтобы в базе хранились все действия с возможностью управления ими
09:13
а не были гвоздями прибиты в ивентклассах
09:15
например, задача такая - для определенного события поменять notification group или alarm severites
09:16
нужно сначала определить, какие дейстыия мы можем сделать над ивентом
09:16
сейчас их штук 10
kokozzi #
09:19
хорошо бы сюда: https://bitbucket.org/nocproject/noc-tower/overview добавить еще данные по необходимым для установки пакетам
Dmitry1 #
09:19
handler, trigger, drop, suppress, dispose, link_event, plugins
09:19
dvolodin: читаешь то, что я пишу ?
09:20
это все можно заменить на один метод - action
09:21
а в action сделать что-то типа "NOC | Event | Drop Event"
09:21
и туда уже гвоздями прибивай код
09:22
в action вынести все хандлеры
09:22
все джобы и все солюшены
09:22
заодно action должен уметь запускать pyrule
dvolodin #
09:31
kokozzi: он сам их ставит
09:31
а остальное там указано вроде
09:32
Dmitry1: ты, фактически, пытаешься придумать handler'у alias
09:32
и нафига?
evyscr #
09:32
он хочет отключать же
Dmitry1 #
09:34
не просто отключать, а отключать, к примеру на access свичах, но оставить на core
09:35
или, как я приводил пример с удаленным офисом, мне нужны алармы только с понедельника по пятницу с 9 утра до 6 вечера
09:36
потому как я 100% знаю, что вечером и в выходные они отключают оборудование в офисе
teroni #
09:36
dvolodin: а как нить креши прочитать в удобоваримом виде можно?
dvolodin #
09:36
которые в crashinfo?
teroni #
09:36
угу
09:37
а то из лога их выдирать то-же криво
dvolodin #
09:37
подумать нужно
09:37
можно и командочку придумать какую
09:37
типа ./noc crashinfo ...
Dmitry1 #
09:38
если сделать управление отдельно для триггеров, отдельно для хандлеров, отдельно для джобов, отдельно для солюшенов, отдельно для disposition, отдельно для action - это будет ад
zi_rus #
09:39
ад уже есть
Dmitry1 #
09:39
поэтому я уже около двух лет прошу все эти сущности объединить в одну с возможностью управления, аналогичную как в триггерах
zi_rus #
09:40
оставить триггеры надо
Dmitry1 #
09:40
чем солюшн отличается от хандлера ? тем - что он лежит в другом каталоге и по другому называется
zi_rus #
09:40
если потроха триггеров чему-то там не удовлетворяют, то только их и переделывать
Dmitry1 #
09:40
чем хандлер отличается от джоба ? тем - что он лежит в другом каталоге и по другому называется
zi_rus #
09:41
солюшен хуюшен
09:41
это все пирулями можно делать
09:41
не опускаясь в консоль
Dmitry1 #
09:41
zi_rus: Дима не хочет переделывать потроха триггеров, а вместо этого наплодил кучу сущностей на каждый чих
evyscr #
09:42
блять, пишите уже доки
zi_rus #
09:42
не поможет
09:43
их не успеваешь писать все опять переделывают
09:43
вот мокросервисы запилят
09:43
и все, абзац
09:43
я даже как их ставить не знаю
Dmitry1 #
09:43
я предлагаю: все хандлеры, солюшены и т.п. перенести в триггеры
evyscr #
09:43
порядочные люди пишут доки одновременно с кодом
zi_rus #
09:43
а то "тестите мокросервисы..."
evyscr #
09:43
совсем порядочные - до кода
zi_rus #
09:43
где ты тут таких видел
Dmitry1 #
09:44
просто научить триггеры запускать не только pyrule, а и скомпилированные скрипты
aef__ #
09:44
Dmitry1: это и есть handler-ы
zi_rus #
09:44
пусть триггеры компилируют пирули
evyscr #
09:44
пусть женятся (ТМ)
Dmitry1 #
09:45
aef__: как мне в хандлере для определенной железки поменять alarm severites или group notification ?
evyscr #
09:45
развели помойку, потом не понимают, почему всё так грустно
teroni #
09:45
dvolodin: вот тебе креши
09:45
http://pastebin.com/Q6axLZZC
09:46
http://pastebin.com/DvFzzWc5
aef__ #
09:46
Dmitry1: точно также как ты бы его менял в "скомпилированном скрипте" (tm)
Dmitry1 #
09:46
aef__: а ничего, что сетевой инженер не обязан знать питон ?
aef__ #
09:47
Dmitry1: т.е. если "скомпилированный скрипт" обозвать handler-ом - ему его становится не надо знать?
teroni #
09:47
http://pastebin.com/MD6C0Vru
Dmitry1 #
09:48
aef__: хандлер у нас гвоздями прибит в правилах классификации
09:48
как и disposition
09:48
как и link_event
09:49
от того, что мы научим триггеры запускать хандлеры, Дима их из JSON не уберет
aef__ #
09:49
Dmitry1: а зачем их убирать?
Dmitry1 #
09:49
"link_event": true,
09:49
"handlers": [
09:49
"noc.fm.handlers.event.link.oper_down"
09:49
],
09:50
это должен решать конечный пользователь, запускать хандлер или нет
09:50
выставлять флажок link_event или нет
aef__ #
09:51
Конечный пользователь ничего не решает. Если ты хотел сказать что handler должен учитывать хотелки пользователя - то ты выбрал слишком сложный способ это сказать
Dmitry1 #
09:52
тогда перефразирую - хандлер должен учитывать хотелки местного админа
evyscr #
09:53
не говоря о предлагаемой реализации
aef__ #
09:53
Dmitry1: ты так убедительно это доказываешь, как буд-то с этим кто-то спорит
Dmitry1 #
09:53
Дима спорит
evyscr #
09:53
не с этим, вообще-то
09:53
грамотное и чёткое изложение своих мыслей - путь к успеху
Dmitry1 #
09:53
Он говорит, что должно работать так, как прибито гвоздями, ибо это правильно, и на его сетве работает так
evyscr #
09:54
вот чего ты на самом деле хочешь?
09:55
внедрить расписания?
09:56
приплюсовать к ним профайлы, надстроить интерфейс к монге?
09:56
начни реализовывать с минимизацией воздействия
dvolodin #
09:58
спорю я с полным непониманием механизма
09:58
для начала - у нас под две сотни event class'ов
09:59
кто там будет мышкой колупаться?
evyscr #
09:59
тот, кому надо
aef__ #
09:59
dvolodin: будет-будет. Нечасто и не во всех, но будут
evyscr #
09:59
две сотни - это, тащем-та немного
10:00
Дима1 их, конечно, превратит в 40000
dvolodin #
10:00
во вторых -- спорю с искуственным разделением handler'ов и solution'ов
10:00
это одна сущность
evyscr #
10:00
а где дока, в которой всё это написано?
dvolodin #
10:00
я добавил в NOC возможность указывать callable по полному пути
10:01
evyscr: ты ее написал, но там плохо со знаками препинания
Dmitry1 #
10:01
никаких полных путей
dvolodin #
10:01
Dmitry1: зайди в settings.py
evyscr #
10:01
я не могу, мне логика не ясна
dvolodin #
10:01
и ты их там увидешь
10:01
ну так слушайте логику
Dmitry1 #
10:01
все скрипты должны для конечного пользователя быть в одном каталоге
dvolodin #
10:01
Dmitry1: не должны
10:01
логика такова
Dmitry1 #
10:01
для конечного пользователя
dvolodin #
10:02
конечному пользователю там делать нечего
10:02
логика такова
10:02
есть callable
10:02
когда он загружен, у него есть id
Dmitry1 #
10:02
по русски
dvolodin #
10:02
фактически - адрес
Dmitry1 #
10:02
что такое callable
aef__ #
10:02
Dmitry1: у тебя конечный пользователь питона не знает - нафига ему каталог скриптов?
evyscr #
10:02
такс
10:02
тихо все
10:02
вопросы после
dvolodin #
10:03
достушайте сначала
10:03
callable -- это объект питона, который можно вызвать как функцию и он вернет результат
10:03
вот вам два примера
10:03
def callable1(a, b):
10:03
return a + b
10:03
страшно, да?
10:03
второй вариант
10:03
class callable2:
10:04
def __call__(self, a, b):
10:04
return a + b
10:04
не суть важно
10:04
важно то, что если объек являеся callable, его можно вызвать через круглые скобки
10:04
callable1(1, 2) ----->
10:04
callable2(1, 2) ----->
10:04
ответ в обоих случаях - 3
10:05
на бытовом уровне -- callable это функция
10:05
ну или класс, который под нее мимикрирует
10:05
дальше
10:05
чем хороша функция
10:05
ее можно вызвать и она может глючить
10:05
далее
10:06
если для кого-то октровение -- то в NOC дофига функций
10:06
он вообще весь из них состоит
10:06
поехали дальше
10:06
функцию можно вызвать по имени
10:06
на самом деле -- по id
10:07
если я скажу python'у callable1, он мне даст ссылку на функцию
10:07
это как указатель на функцию в C
10:07
когда известно, какие функции нужно вызывать, их можно просто прописать в коде
10:08
получим так любимый всеми хардкод
10:08
теперь представьте, что мы знаем, что в каком-то месте должна быть обработка результата
10:08
но понятия не имеем, какая
10:08
это должен определить внедренец или админ
10:09
нам нужно дать ему механизм вклинить в процесс свой функционал
10:09
например, указав какую функцию вызвать
10:09
достаточно только определить, что на вход пойдет, и что она отдаст
10:09
итого у нас получается код, поведение которого можно менять не трогая сам код
10:09
мракетологи называют это плагинами
10:10
и другими бесовскими словами
e_zombie #
10:10
:-/
dvolodin #
10:10
далее возникает вопрос -- как их указывать
Dmitry1 #
10:10
Дим, теперь самое шлавное
dvolodin #
10:10
погоди
Dmitry1 #
10:10
главное
10:10
как их указываать
dvolodin #
10:10
Дима, ты или погоди, или дальше сам
evyscr #
10:10
Dmitry1: уймись, а
dvolodin #
10:10
учись слушать
10:10
так вот
10:11
как нам понять, что нужно вызвать, если у нас этого кода нет
10:11
тут вариантов масса -- от динамических библиотек до хитрой правки кода
10:12
но, чтобы было проще, я сделал функцию get_solution, почему solution, позже расскажу
10:12
она на входе принимает полный путь к callable
10:12
на выходе выдает сам callable
10:13
то есть
10:13
f = get_solution("noc.sa.<blabla>.mymodule.myfunc")
10:13
f(1, 2) ---> 3
10:14
нам достаточно сделать модуль mymodule.py и определить в нем функцию myfunc
10:14
в приницпе это ровно то же, что делается в pyrule
10:14
только прямее
10:14
то есть мы вот эти имена выносим в конфиги
10:14
далее
10:15
как с этим дальше жить
10:15
как только вы начинаете хачить код, возникает вопрос, как его сопровождать
10:15
наиболее разумное -- собрать все свои локальные правки в одном месте отдельно от кода NOC и просто подключить их
10:16
например профили и скрипты, обработчики событий и прочее
10:16
получается один или несколько пакетов
10:16
в принципе, если пакет получился достаточно функциональным - его можно подарить кому-то еще
10:16
тут руки развязаны полностью
10:17
вот этот пакет называется solution
10:17
это не моя придумка, такие пакеты есть во многих OSS системах
10:17
и, порой, стоят в десятки раз дороже самой системы
10:17
не самая плохая практика
10:17
далее
10:17
вернемся к событиям
10:18
классификатору на вход поступило событие
10:18
он, обычно, реагирует согласно атрибутам event class'а
10:18
но настройки на все случаи жизни в event class'е не предусмотришь
10:18
и часто нужно смотреть и настройки объекта, и профиля и просто фазу луны
10:19
порой проще сказать -- у меня тут есть несколько полезных функций, если придет событие этого класса - прогони через них
10:19
в json эти функции указываются ровно тем же механизмом по полному имени
10:20
например -- логгирование логинов/логаутов в отдельной коллекции, ведение списка набранных комманд и прочее
10:20
solution'ы содержат API для того, чтобы вклиниться в эти настройки и довернуть еще свои обработчики
10:20
делать их просто
10:20
def handler(event):
10:20
....
10:20
и все
10:21
у нас на входе instance ActiveEvent со всеми его методами
10:21
и с ним можно делать что угодно
10:21
ORM сам по себе дает хороший API для манипулирования данными
10:22
аналогичные петли есть во многих местах
10:22
скажем можно навесить свой алгоритм классификации событий
10:22
их даже сейчас из коробки два идет -- тупой и акселерированный
10:23
дальше, что такое job
10:23
пока в разрезе микросервисов, там прямее
10:24
{ "_id" : ObjectId("563f09d89d571742cace1091"), "jcls" : "noc.services.discovery.jobs.box.job.BoxDiscoveryJob", "key" : 9, "ts" : ISODate("2015-11-13T14:07:44.995Z"), "s" : "W", "data" : { }, "runs" : 67, "o" : 0.29027818407475636, "f" : 0, "ldur" : 1.6495530605316162, "st" : ISODate("2015-11-13T11:07:46.849Z"), "ls" : "S" }
10:24
это примерно такая структурка в монге
10:24
jcls -- как раз такое вот имя callable
10:24
ему на вход дают параметры job'а, по завершению он сам решает, когда запуститься в следующий раз
10:25
отличие микросервисов -- в job можно пихнуть любую функцию
10:25
там есть специальный job под названием call
10:26
то есть механизм получается тот же самый
10:26
но у вызова появляется расписание
10:27
например, при сохранении MO я могу не пересчитывать все в контексте вызова save, а отдать на отработку совсем в другой процесс
chaotism__ #
10:27
можно маленькое замечание про код : вы когда по циклам ходите, пишите не j c w job class work, когда там вложенность 3 уровня глаза вытекают
10:27
сингл тоны если используются то как-то их хоть с большой буквы
dvolodin #
10:27
chaotism__: это где конкретно?
chaotism__ #
10:27
да например в wipe()
evyscr #
10:27
link_discovery
chaotism__ #
10:27
про sa
dvolodin #
10:27
длинные названия тоже плохи
chaotism__ #
10:28
и discovery
10:28
они должны быть читаемыми
evyscr #
10:28
dvolodin: закончилось или ещё что последует?
chaotism__ #
10:29
в sa service в ините получает sa в инициализации
dvolodin #
10:29
да, давайте приступим к прениям
chaotism__ #
10:29
а в самом sevice есть фунцкии которые работают с sa
10:29
импорты повсюду
evyscr #
10:30
callable через ивент добирается до всех параметров мо, так?
chaotism__ #
10:30
атрибуты потом методы потом атрибуты потом методы
10:30
в классах
10:30
в tower так же?
dvolodin #
10:31
evyscr: да
10:32
event.managed_object
evyscr #
10:33
у меня ключевым было "всех", если что. ок.
dvolodin #
10:33
да, пожалуйста
evyscr #
10:33
далее, у нас есть дефолтные хендлеры
dvolodin #
10:33
mo = ManagedObject.objects.get(id=666)
evyscr #
10:35
переопределение дефолтных хендлеров - как? (вариант - доп. обработка)
10:35
дефолтные в eventclass
dvolodin #
10:35
lib/solution.py
10:36
в инициализации solution'а делается
evyscr #
10:37
боюсь, требуется разъяснение
dvolodin #
10:37
но отключение дефолтных может привести к неприятным последствиям
10:38
mkdir -p solutions/<vendor>/<name>/
10:38
в <vendor> делаешь пустой __init__.py
10:38
в <name> делаешь __init__.py
10:38
и в нем
10:38
from noc.lib.solution import ....
10:38
например
10:39
unregister_event_handler("Network | Link | Link Down", "<какой handler убрать>")
evyscr #
10:41
ох... дальше стопудово захочется посмотреть текущие хендлеры
dvolodin #
10:41
fm/handlers/
evyscr #
10:43
эм...
10:43
если сделан unregister?
10:43
я имею в виду - в запущенном ноке посмотреть
10:43
но это так, к слову
10:44
я правильно понимаю, что миминум половина хотелок Мити уже решается с использованием данного механизма?
dvolodin #
10:46
да все и решаются
10:47
посмотреть в запущенном - если нужно, могу сделать в мониторинге микросервисов
10:47
там есть возможность зайти и посмотреть внутреннее состояние
evyscr #
10:47
это не к спеху, но впоследствии пригодится
dvolodin #
10:47
тупо браузетом
10:47
да, я на эту тему думал
10:47
каждый сервис выставляет endpoint /mon/
10:48
он выдает метрики для внешних систем мониторинга
10:48
и в нем можно делать типа информационных листов
10:49
в которых можно показывать внутреннюю структуру
10:49
для классификатора, например, статистику срабатывания правил и текущие настройки
10:49
при желании вплоть до отключения handler'ов на ходу
10:50
беда в том, что Дима никогда не дослушивал до конца
10:50
еще относительно селекторов
10:51
мне крайне не нравится идея использовать их в fm
10:51
наверное правильнее сделать какие-то иерархические профили
10:51
managed object'а
10:54
teroni: прикладывай, пожалуйста, полные трейсы
kokozzi #
10:54
dvolodin: возвращаясь к разговору до начала брейншторма - похоже, Tower ставит не всё-таки на всё, на чистую убунту предварительно надо было поставить python-dev libffi-dev libyaml-dev
teroni #
10:54
из лога их вытаскивать совсем капец
kokozzi #
10:54
можно было бы это в доку внести
dvolodin #
10:55
kokozzi: да, это он не может поставить
teroni #
10:55
https://kb.nocproject.org/pages/viewpage.action?pageId=21233723
dvolodin #
10:55
допишем в доку, хорошо
kokozzi #
10:56
внесу тогда по ссылке teroni
dvolodin #
10:59
teroni: get_neighbor_by_mac пофиксил
11:03
и покажи мне
11:03
./noc script get_oam_status от get_oam_status
11:04
от 192.168.223.1
Dmitry1 #
11:05
закончилась фигня ?
11:06
dvolodin: ответь, мне, пожалуйста, всего на один вопрос, очень важный, я хочу на него получить ответ уже пару лет. без него ничего не имеет смысла
11:06
цитирую тебя
teroni #
11:06
у меня не включен OAM
11:06
http://pastebin.com/tZXWAfXa
Dmitry1 #
11:06
(12:15:12) dvolodin: но настройки на все случаи жизни в event class'е не предусмотришь
11:06
(12:15:25) dvolodin: и часто нужно смотреть и настройки объекта, и профиля и просто фазу луны
11:06
(12:15:55) dvolodin: порой проще сказать -- у меня тут есть несколько полезных функций, если придет событие этого класса - прогони через них
11:07
dvolodin: внимание вопрос - как это сделать через WEB ?
evyscr #
11:07
написать приложение
dvolodin #
11:08
Dmitry1: это уже совсем не то, что ты описывал
11:08
теоретически можно сделать табличку с настройками
11:09
event class -- список handler'ов
evyscr #
11:09
можно даже написать веб-приложение, которое будет править код нока
dvolodin #
11:09
ну и галочку -- включить/выключить
Dmitry1 #
11:09
табличка с настройками есть - называется eventtrigger и alatmtrigger
dvolodin #
11:09
тогда из web подцепишь свои handlerы и отключить их
11:09
нет, это не та табличка с настройкаим
11:09
еще раз
11:10
те триггеры я думаю вообще выпилить можно
Dmitry1 #
11:10
говорю еще раз
11:10
я написал
11:10
да
dvolodin #
11:10
они как раз дублируют функционал
11:10
просто более ранняя реализация
Dmitry1 #
11:11
написал хандлер, который не запускает аларм
11:11
как мне его прикрутить к десятку ивентов с десятком разных условий ?
dvolodin #
11:12
будешь придумывать птичий язык для написания условий?
11:12
а если его не хватит?
Dmitry1 #
11:12
с учетов тайм серии, с учетом селектора
11:12
какой еще птичий язык ?
dvolodin #
11:13
а если фаза луны нужна?
Dmitry1 #
11:13
мы в ивентклассах используем птичий язык ?
11:13
обычные регекспы
11:13
у нас с ивента приходит четко прописанный набор переменных
11:14
всего-навсего нкужно проверить, подходит ли переменная под заданное условие
11:14
и дальше выполнить хот хандлер, хоть джоб, хоть пируле, хоть солюшн, хоть action
11:15
мне без разницы, как будет называться это семейство скриптов, и без разницы, на чем оно будет написано, хоть на brainfuck
11:16
но я должжен иметь возможность запустить его, или не запустить, в зависимости от какого-то условия
dvolodin #
11:16
и как ты будешь проверять?
Dmitry1 #
11:16
это уже другой разговор
dvolodin #
11:17
ну почему же
Dmitry1 #
11:18
в данный момент, перед вызовом именттриггера
dvolodin #
11:18
еще раз -- в полнолуние с 22:00 до 07:00 не хочу принимать алармы от поэтов и безумных
aef__ #
11:18
dvolodin: при всем его косноязычии местами он все же прав. Нужна штатная возможность проксирующих handler-ов
dvolodin #
11:18
aef__: мы уже года два эту тему мусолим
11:18
"нужна" можно повторять вечно
11:18
нужно четкое и понятное описание механизма
11:18
а не последствий его реализации
Dmitry1 #
11:19
мы проверяем: time series, регексрп ивенткласса, селектор
aef__ #
11:19
dvolodin: предусмотреть у handler-а лишний параметр. Который можно задать в описаниии event/alarm. По умолчанию пустой
dvolodin #
11:19
зачем?
11:19
у него и так есть event_class
11:19
давайте с другой стороны
11:20
у нас есть поток в 1000 событий в секунду
aef__ #
11:20
погодь. дай я договорю, потом будешь кидаться помидорами
Dmitry1 #
11:20
какой ивенткласс у хандлера "audit" ?
aef__ #
11:20
у нас есть event1,event2....eventN с хандлерами h1 h2 .. hN
dvolodin #
11:20
Dmitry1: вопрос аналогичен тому "кто вызывает функцию"
Dmitry1 #
11:21
как мне добавить хандлер "audit" к ивентклассу "CPU HI LOAD" ?
dvolodin #
11:21
aef__: EventClass
aef__ #
11:21
мы хотим для event-ов с 3 по 7 добавить проверку
dvolodin #
11:21
настройки делаются для класса
Dmitry1 #
11:21
настройки делаются в WEB'е
11:22
а их у нас нету там
11:22
чем плохи настройки у eventtrigger ?
aef__ #
11:22
и вот чтобы не плодить 4 класса отличающихся лишь в деталях, мы делаем 1( один) proxy_handler с параметром в виде callable исходного handler-а
Dmitry1 #
11:22
почему я вместо pyrule не могу оттуда запустить хандлер или солюшн ?
dvolodin #
11:23
aef__: смотри
Dmitry1 #
11:23
aef__: не правильно, мы должны туда еще и передавать параметры
dvolodin #
11:23
def base_f(...):
11:23
...
aef__ #
11:23
Dmitry1: помолчи пожалуйста
dvolodin #
11:23
def f1(....):
11:23
base_f(....)
11:23
и так далее
11:23
общий код можно вынести
aef__ #
11:24
Все равно монстрик получается
11:24
особенно если надо не 4 а 44
dvolodin #
11:24
а есть еще functools.partial
11:24
если они у тебя только параметрами отличаются
11:24
ты можешь из одной функции налепить много с фиксированными параметрами
Dmitry1 #
11:25
надо давать возможности править параметры прямо в WEB
11:25
пример хандлера "audit"
11:25
когда ему параметром передается строка
11:25
на heccrjv zpsrt
11:26
на русском языке
aef__ #
11:26
у меня обратный случай. функция одна - параметры нефиксированные
Dmitry1 #
11:26
aef__: это как раз и есть в FM, когда есть required параметры и обычные
11:26
это реализовано давно уже
aef__ #
11:27
dvolodin: def proxy_h(param_list,next_handler)
11:27
do_something
11:27
next_handler(param_list)
11:27
в результате делаем 1( один) хандлер и к нужным эвентам его параметризуем
Dmitry1 #
11:28
aef__: смотри SA -> Setup -> Action
11:28
например "ping"
dvolodin #
11:29
aef__: так не очень хорошо
Dmitry1 #
11:29
есть название, описание, параметры, хандлер
dvolodin #
11:29
питон хвостовые вызовы не свернет
11:29
у нас есть список функций
11:29
мы его и вызываем
aef__ #
11:29
А Димочка вместо raise_alarm NONE сможет написать do_not_callmeinsundays raise_alarm
dvolodin #
11:29
погодите
11:29
до алармов мы еще не дошли
11:29
:)
11:29
пока только события
11:30
что касается алармов
Dmitry1 #
11:30
SA -> Setup -> Action
dvolodin #
11:30
смотрите
Dmitry1 #
11:30
SA -> Setup -> Action
11:30
там есть хандлер
dvolodin #
11:30
хочу сделать такую вот вещь
Dmitry1 #
11:30
Дим, ты опять меня не понимаешь
dvolodin #
11:31
ты дослушай
Dmitry1 #
11:31
Если нужно срочно поменять поведение FM, никто не будет бегать и искать программиста на питоне
zi_rus #
11:31
не надо срочно ничего менять
11:32
это не аварийная ситуация
aef__ #
11:32
Dmitry1: твоя проблема в том что ты сам себя не понимаешь. Дай ему договорить, ну позязя
dvolodin #
11:32
вот что точно будет - зонтик для ПНР/РНР
11:32
чтобы накрывать на заданное время железки и не поднимать alarm'ы
[Marael] #
11:32
-----------> кто-нибудь скопипасти хотя бы блобом это потом на кб (эти разяснения)
Dmitry1 #
11:33
dvolodin: еще раз
zi_rus #
11:33
dvolodin: это опасно, а если авария осталась после завершения работ, а все пошли спать
Dmitry1 #
11:33
есть хандлер "поменять alarm severity"
11:33
нужно его применить ко 100 событиям
zi_rus #
11:33
по-моему цветовой маркировки достаточно
dvolodin #
11:33
zi_rus: можно обсуждать
zi_rus #
11:34
делать такие аварии серыми
Dmitry1 #
11:34
13:30:11) Dmitry: есть хандлер "поменять alarm severity"
11:34
(13:30:21) Dmitry: нужно его применить ко 100 событиям
dvolodin #
11:34
да
11:34
даже больше
11:34
в ЦУС обычно смотрят на новые аварии
Dmitry1 #
11:34
(13:30:11) Dmitry: есть хандлер "поменять alarm severity"
dvolodin #
11:34
им нужно дать возможность либо пометить ее как известную, либо оформить ТТ
Dmitry1 #
11:34
(13:30:21) Dmitry: нужно его применить ко 100 событиям
dvolodin #
11:34
после чего она должна уехать из их списка
aef__ #
11:34
[Marael]: https://static.nocproject.org/irclog/
Dmitry1 #
11:35
dvolodin: ты упорно игнорируешь ?
11:35
твой ответ - нужно 101 раз вызывать программиста на питоне ?
11:35
1-й раз - написать хандлер
11:36
остальные 100 раз - вручную туда забивать эти 100 ивентклассов
zi_rus #
11:36
сколько программистов нужно чтобы написать хендлер
evyscr #
11:36
*чтобы поменять лампочку
[Marael] #
11:36
aef это я знаю, но все же отдельной темой бы
evyscr #
11:36
[Marael]: не боись, будет
11:36
я не зря подбивал
[Marael] #
11:37
ок
dvolodin #
11:37
вот две картинки на помедитировать
11:37
http://i66.fastpic.ru/big/2015/1113/2c/74afed3d40e195f28fe226cae7b1542c.png
Dmitry1 #
11:38
Дим, ответь
11:38
(13:31:09) Dmitry: (13:30:11) Dmitry: есть хандлер "поменять alarm severity"
11:38
(13:31:09) Dmitry: (13:30:21) Dmitry: нужно его применить ко 100 событиям
zi_rus #
11:38
dvolodin: завязывать тебе пора с ростелекомом
dvolodin #
11:40
https://www.dropbox.com/s/nj51gn0xy7zsjzo/Screenshot%202015-11-13%2014.37.43.png?dl=0
11:40
вот вторая
11:40
а теперь мы поговорим про алармы и про PM
11:40
:)
zi_rus #
11:41
второе это какая-то хуерга
aef__ #
11:43
zi_rus: не то, чтобы хуерга, просто непонятно нафига оно
dvolodin #
11:44
помедитировали
11:44
поехали дальше
11:44
про алармы и pm
11:45
сейчас беда в том, что они привязаны к разнородным объектам в базе
11:45
и для оценки последствий приходится хардкодить кучу всего
11:45
что я хочу
11:47
введем такое понятие как сервис
11:47
сервис это структура данных
11:48
у нее есть внутреннее состояние (какие-то переменные)
11:48
у нее есть тип, который описывает этапы, в которых может находиться сервис
Dmitry1 #
11:50
т.е. с возможностью применить хандлер к 100 разным правилам мы у же порешали ?
11:51
не вызывая при этом 100 раз программиста на питоне
dvolodin #
11:51
часть сервисов видна клиенту как услуга
11:51
часть -- технологическая и скрыта
11:52
сервисы перевязаны между собой
11:53
либо полной зависимостью, либо зависимостями типа N/M (должно работать не менее N сервисов из M)
11:53
на второй схемке я разрисовал кусочек сети доступа с кольцевой топологией, коммутаторами агрегации и BRAS
11:54
если тыкнуть пальцем в любой квадратик и пойти против стрелок - увидим затронутые сервисы
11:54
собственно FM должен расчитывать при аварии, какие сервисы навернулись
11:55
FM может сам решить, что сервис навернулся
Dmitry1 #
11:55
Дим, у меня нету FM
dvolodin #
11:55
по текущим механизмам alarm'ов
Dmitry1 #
11:56
и нету по той причине, что он делает что-то свое, как ты говоришь "рещает"
11:56
а должен решать Я
dvolodin #
11:56
и сервисы должны определять способы проверки работоспособности и производительности
11:56
то есть весь PM должен конфигуриться как раз параметрами сервисов
evyscr #
11:57
хрен его знай
dvolodin #
11:57
скажем - Порт доступа и Порт BRAS мониторятся по разному
evyscr #
11:57
оно ещё от железа сильно зависит
Dmitry1 #
11:57
(13:53:43) dvolodin: скажем - Порт доступа и Порт BRAS мониторятся по разному - Аллилуя !!!!
zi_rus #
11:57
дык профили интерфейсов для кого делали
dvolodin #
11:57
основное и резервное направление с зависимостями от коммутаторов по цепочке нужно, чтобы не пересчитывать каждый раз топологию
Dmitry1 #
11:58
А можно я буду решать, как мне мониторить порт, а не FM ?
dvolodin #
11:58
упал один коммутатор - упала вся цепочка
zi_rus #
11:58
решай, кто ж тебе не дает
dvolodin #
11:58
Dmitry1: FM не решает
11:58
решают настройки
11:58
для PM оставляем ту же методику с metric type
11:59
только убираем нафиг вообще все эти эвристики
Dmitry1 #
11:59
я уже спрашивал, мне нужны настройки, чтобы определенный порт мониторился только с понедельника по пятницу и с 9 утра до 6 вечера
zi_rus #
11:59
напиши пируль
dvolodin #
12:00
Dmitry1: в первой картинке где-то были наброски - часы оказания сервиса
12:00
да, я на это расчитывал
zi_rus #
12:00
пусть он по расписанию вешал на порт нужный профиль
dvolodin #
12:00
это в настройках SLA
zi_rus #
12:00
dvolodin: по-моему это ересь
dvolodin #
12:00
zi_rus: нет, почему
12:00
смотри
zi_rus #
12:00
ты даешь доступ в инет только по будням в рабочее время или что?
dvolodin #
12:00
мы декларируем, что касса у нас работает с 09:00 до 18:00
12:01
в остальное время там тупо свет выключен, никого нет
12:01
если сервис лег в 19:00, то до 09:00 аварии нет
zi_rus #
12:01
это решение не для сервис ровайдеров
Dmitry1 #
12:02
дайте мне сказать
dvolodin #
12:02
zi_rus: у вас часы работы сервиса -- All
12:02
тебе с этого легче?
12:02
:)
Dmitry1 #
12:02
(13:56:59) dvolodin: это в настройках SLA
dvolodin #
12:02
Да
Dmitry1 #
12:02
итак, мы в ивенте смотрим MO, номер порта, и дальше еще что-то
dvolodin #
12:03
смотри
Dmitry1 #
12:03
почему мы в ивенте не можеи смотреть MO, MAC адрес, еще что-то
dvolodin #
12:03
mo - физика
12:03
сервис -- логика
Dmitry1 #
12:03
MO, IP адрес, еще что-то
12:03
чем номер порта в ивенте отличается от другой информации ?
dvolodin #
12:03
Дима, тебя опять куда-то не туда
Dmitry1 #
12:04
у нас есть var interface: "1"
12:04
мы его и проверяем
12:04
а я хочу проверить var: server_ip: "8.8.8.8"
12:04
в чем будет различаться проверки ?
aef__ #
12:05
В том что ты не хочешь писать код этой проверки
Dmitry1 #
12:05
проверок может быть 100500
12:05
на все случаи жизни кода не напишешь
12:06
поэтому нужно сделать возможность конечному пользователю из web-морды lj,fdkznm b e,bhfnm 'nb ghjdthrb
12:06
добавлять и убирать эти проверки
z_pedalkin #
12:10
test
Dmitry1 #
12:10
dvolodin: (13:56:59) dvolodin: это в настройках SLA - это частнай случай
aef__ #
12:10
Чтобы 100500 проверок были доступны из вебморды и работали с 10Кev/s их надо 100500 раз написать. А ты этого не хочешь
12:10
z_pedalkin: failed
Dmitry1 #
12:10
aef__: смотри, у меня сейчас ситуация
12:11
разбирают стек из двух свичей 2-го уровня и ставят вместо этого свич 3-го уровня
12:11
нужно вызывать программиста на питоне ?
12:11
сгорел порт от грозы, переключили в другой порт
ufir #
12:12
ментов вызывать нужно
Dmitry1 #
12:12
нужно вызывать программиста на питоне ?
ufir #
12:12
ты выпил чтоли ?
z_pedalkin #
12:12
мегатест!
aef__ #
12:12
ufir: тут не ментов. Тут нужна консультация эвтаназиолога
ufir #
12:12
определённо
aef__ #
12:12
z_pedalkin: already failed
dvolodin #
12:13
ладно, давайте дальше
aef__ #
12:13
z_pedalkin: а был бы я злой - ответил бы бНОПНЯ!
ufir #
12:13
и кУИЩЩЕ
12:13
бНОПНЯ сБЮФЕМХЕЛ
z_pedalkin #
12:13
peeps, что такое "caps_discovery"?
dvolodin #
12:13
в принципе у сервиса есть необходимая логика для реализации настройки и активации
12:14
тут как раз action хорошо работают
12:14
например для клиентского порта
Dmitry1 #
12:14
dvolodin: disposition - это сервис ?
dvolodin #
12:14
мы вычисляем vlan и номер порта и вызываем action
12:14
а там для разных железок прописываем разный набор команд
12:15
и все
12:15
и в обратную сторону так же
12:15
гасим порт
12:16
у каждого сервиса есть логический статус
ufir #
12:16
бинарный
dvolodin #
12:16
план/реализация/готов/отключение/отключен/приостановлен
12:16
статус жизненного цикла
Dmitry1 #
12:16
текущая задача, которую нужно было сделать еще вчера, из-за которой я погасил FM на Catalyst 6509
dvolodin #
12:16
есть статус физические -- это этап, на котором находится сервис
12:17
скажем -- "кроссировка"
ufir #
12:17
это бред
dvolodin #
12:17
он настраивается уже по технологии и конторы
ufir #
12:17
нахрена ПЛАН ?
Dmitry1 #
12:17
не вызывать алармы, если в тексте сообщения присутствует оперделенная комбинация
ufir #
12:17
если это уже имеет статус сервиса ?
12:17
и реализация ?
dvolodin #
12:17
ufir: элементарно
12:17
смотри
12:17
точнее так
12:17
у сервиса есть этапы
12:18
жизненного цикла
Dmitry1 #
12:18
Дима! Услышь меня. Не Длинк, а всеми любимая циска! Мне пришлось отказаться от FM на ней !
dvolodin #
12:18
ты их настраиваешь под контору
12:18
и под свои процессы
ufir #
12:18
да. но когда ты их настроил - нет никаких планов и т.п. - есть чисто статус функционирования его
dvolodin #
12:18
то с точки зрения логики NOC'а на каждом из твоих этапов сервис может находиться в одном из 6 логических состояний
12:19
у тебя весь workflow может быть - готов
12:19
я не спорю
12:19
тут дальше фокус
ufir #
12:19
да вообщем-то я про то, что не стоит плодить лишние сущности, без явной на то необходимости
dvolodin #
12:20
FM и PM работают только в логическом состоянии Готов
ufir #
12:20
конечно
12:20
на то они и *M
dvolodin #
12:20
ufir: смотри, у вас в аргусе и amdocs есть куча этапов подключения
ufir #
12:20
точнее ?M
dvolodin #
12:20
включая кроссировку и прочее
ufir #
12:20
дык
dvolodin #
12:21
но с точки зрения поведения FM и PM нас интересует именно логический смысл
aef__ #
12:21
dvolodin: тогда нужно еще состояние "тестирование". Когда PM и FM работают частично
ufir #
12:21
логический смысл тут один - подключили или нет, и если да -- то куда
dvolodin #
12:21
aef__: это обсуждаемо, да
12:21
ufir: не совсем
Dmitry1 #
12:21
ЧТО МНЕ ДЕЛАТь ? У МЕНЯ FM НЕ РАБОТАЕТ!
dvolodin #
12:21
вот тестирование, кстати, тоже забавное
12:21
pm должен работать, fm работает, но приоритет аварий у него - 0
ufir #
12:22
есть еще смысл - когда начинать тарификацию абонента. с момента подключения, или с момента фиксации трафика биллингом
aef__ #
12:22
Dmitry1: помолчать часок. А взамен я тебя потом научу работать с SQL на sh. Будет быстрее чем на перле - trust me
dvolodin #
12:22
ufir: а тут тоже есть разные методики
12:22
например, по поступлению трафика мы можем дернуть сервис на этап реализовано
ufir #
12:22
у нас аобнент начинает "абонплачиваться" через 30 минут после получения доступа в глобальный интернет
dvolodin #
12:23
ok
12:23
и в тот же момент сервис должен встать в рабочий режим
12:23
это нормально
12:23
у нас, кстати, наоборот
ufir #
12:23
да представь себе беременную бабу
dvolodin #
12:23
если мы проверили, что абонент подключен - уходит сигнал в биллинг
ufir #
12:23
что там планировано, что реализовано ?
dvolodin #
12:23
не суть важно
12:23
это уже детали workflow
12:23
важно другое
aef__ #
12:24
dvolodin: у слишком монструозного workflow другая проблема - его никто никогда не будет доводить до конца
ufir #
12:24
в том-то и дело
z_pedalkin #
12:25
товарищи, не могли бы подсказать 1. почему regexp "logging (host|([0-9]{1,3}\.){3}[0-9]{1,3})" прописанный в validation rule может не матчится в конфиге? 2. Есть ли оффлайн метод получения помощи, например, форум?
dvolodin #
12:26
SLA и настройки мониторинга приведут к тому, что авария будет отрабатываться как раз по крутизне сервиса
aef__ #
12:26
z_pedalkin: есть кейсы в жире. но тут будет быстрее
dvolodin #
12:26
и мониторинг врубится когда надо и какой надо
12:26
aef__: мы в москве довели
12:26
еще раз -- это инструмент
z_pedalkin #
12:26
кейс для bug, у меня request :)
dvolodin #
12:26
в маленьких сетях - пожалуйста
12:27
либо положим несколько дефолтных workflow
12:27
типа -- включен/отключен
12:27
или с этапностью, совпадающей с логическими статусами
12:27
и, да
12:27
клиент, скотина, привязан к сервису
12:27
и является его атрибутом
12:28
на картинке розовым -- это CFS
12:28
customer facing services
12:28
клиенту продали интернет, voip, iptv и wifi роутер
12:28
цвета детской неожиданности - RFC
12:28
RFS
12:28
ресурсные сервисы
12:29
нужны для фолта, pm и активации
12:29
собственно про actions
12:29
большинство их них будет принмать в шаблон service
12:29
и там будет что-то вроде
12:29
interface {{ service.data.interface }}
12:30
description "-C- {{ service.customer.n }}"
12:30
switchport access vlan {{ service.data.vlan }}
12:30
попало на этап -- отработал action
12:30
на выходе с этапа 2 стрелки -- удалось или нет
12:31
тогда можно делать то, что хотел fumufu86
12:31
с операторским АРМом
12:32
а TT открывается на сервис и у него свой жизненный цикл
12:32
если используется одна или несколько внешних систем -- он просто спроксирует запрос и будет ждать разрешения
12:33
а в случае необходимости будем развивать свою систему
12:33
чтобы не крутить всякие OTRS
12:33
ладно, давайте соображения и критику
aef__ #
12:33
dvolodin: не, не надо тикеты сюда тащить - давайте управление сетью до ума доведем
dvolodin #
12:33
aef__: я не хочу их тащить
12:33
но хочу иметь возможность открыть
12:34
и возможность понимать, что они есть и в таком-то состоянии
12:34
их не нужно забывать
12:34
в панели смены мы показываем, какие сервисы сейчас навернулись
12:34
именно сервисы
12:34
вычисляем корень
12:35
все сервисы под ним накрываем зонтиком
12:35
если смена решила, что это авария -- октрывают ТТ
12:35
и мы его запоминаем на аварии
aef__ #
12:35
dvolodin: засада в том, что вычисление корня может быть крайне нетривиальным делом
dvolodin #
12:36
и там опционально -- либо они видят аварии с открытым ТТ, либо нет
12:36
aef__: еще раз посмотри мою схему
12:36
там precalculated root cause
12:36
и еще у каждого сервиса есть операционный статус
12:36
FULL/DEGRADED/FAIL
12:36
FULL я готов разбить на два
12:37
FULL-REDUNDANT/FULL-NOTREDUNDANT/DEGRADED/FAIL
12:37
то есть -- в полном объеме с резервом, в полном объеме без резерва, деградировал, сдох
aef__ #
12:38
dvolodin: precalculated хорош на бумаге. в реалиях 5к говнодлинков которые тырят ip-адреса друг у друга все выглядит слегка иначе
12:38
Т.е. свитчи ветки недоступны, все оче плохо. но по факту клиентские сервисы не страдают вообще
dvolodin #
12:38
aef__: а ты в таких условиях и так не просчитаешь
aef__ #
12:38
dvolodin: ну так я так и сказал
dvolodin #
12:38
а для этого есть мониторинг сервиса
12:38
то есть смотри
12:38
если наш мониторинг сказал, что длинк сдох
12:39
но за ним у нас корпоративщик
12:39
который пингуется отдельно и нормально
12:39
то он рабочий
aef__ #
12:39
у корпоративщика отдельный l2, пингануть ты его не можешь. Но он рабочий. да
dvolodin #
12:39
тут тебе уже любая система ничего не сделает
12:40
я смотри что сделал
12:40
в мониторинге есть еще использование ресурсов
aef__ #
12:40
ну я тебе про это и говорю. А ты мне про precalculated рассказываешь)
dvolodin #
12:40
то есть, например, если у тебя interim'ы летят
12:40
то это показатель того, что сервис живой
12:41
я с другой стороны тогда скажу
12:41
если коммутатор не откликается, а пакеты гонит, но его пингование - просто недостоверный метод
aef__ #
12:42
остальные методы еще более недостоверны
dvolodin #
12:42
ну не скажи
12:43
например, мы можем сказать, что коммутатор живой, если он пингуется или на BRAS есть входящий трафик от любого юзера с него
12:43
:)
zi_rus #
12:44
dvolodin: тебя опять в какую-то хуергу понесло
12:44
почему нельзя сделать чтобы нок сначала просто начал работать
12:44
нормально
12:44
чтобы фм открывал и закрывал алармы
12:44
чтобы линки дискаверились
12:44
чтобы дискавери вообще работал
aef__ #
12:44
dvolodin: задача разобрать траффик браса - настолько тяжелая, что клиент к тому моменту может уже сам подняться
zi_rus #
12:45
а не вот эту хуету про клиентов
Dmitry1 #
12:46
поддерживаю. у меня тупо не работают IPAM, PM и FM
zi_rus #
12:46
вот эти сказаки как оно было бы заебись, это хорошо когда остальное все работает, а у тебя даже в базовых процессах какая-то хуйня постоянно всплывает
Dmitry1 #
12:46
дпавайте сделаем сервичы
zi_rus #
12:46
и не фиксится годами
aef__ #
12:46
но таки да. поддерживаю zi_rus-а. Давайте сделаем работающий SA/PM/FM. а потом будем делать фенечки
zi_rus #
12:46
workflow уже сделали, мегамодуль
aef__ #
12:46
А то пинги у меня как не работали так и не работают
zi_rus #
12:46
солкьо его используют?
dvolodin #
12:47
aef__: тестируй микросервисы
aef__ #
12:47
zi_rus: так его уже выпилили вроде
zi_rus #
12:47
ну ахуй вдвойне, запилили и выпилили
Dmitry1 #
12:48
dvolodin: Дим, не обижайся на правду, но вот сколько коммитов от других разработчиков было в супер-пупер вещи: handlers, jobs, solutions ?
12:48
какой из этого вывод ?
dvolodin #
12:48
без такой штуки FM и PM висят в воздухе
Dmitry1 #
12:48
Ты на эти вещи убил пол-года
12:49
Никто кроме тебя не знает, как они работают и что они делают
dvolodin #
12:49
они работают и вполне меня устраивают
Dmitry1 #
12:49
Т.е. ты сознательно пишешь NOC только для себя ?
12:50
А я то, дурак, пытаюсь им пользоваться
12:50
А вот оно как выходит
alecsandrb #
12:52
а вот по поводу теста микросервисов - а каким макаром их поднять на ubuntu?
aef__ #
12:53
alecsandrb: интереснее каким макаром их поднимать не на deb-based.
12:53
особенно при наличии работающей инсталляции
alecsandrb #
12:54
не, ну у меня есть работающая на Ubuntu, хотелось еще одну поднять с микросервисами - но нигде не видел как это сделать
aef__ #
12:56
alecsandrb: use tower, Luke
12:56
проблема в том что tower не очень публичный пока
alecsandrb #
12:57
т.е я так понимаю тестировать надо - но как поднять для теста -
12:57
не понятно
chaotism__ #
12:57
Dmitry1: я знаю как работают handlers, и jobs
12:58
всего лишь неделя рабочая работы, в девелоп ветке
12:58
dvolodin: можно ли безболезненно объединить event в одну модель, функционал у них дублируемый
12:59
или они где то срочками вызываются в джобах
13:02
Dmitry1: про fm же Дмитрий вроде всю работу расписал?
Dmitry1 #
13:02
какую работу ?
dvolodin #
13:03
chaotism__: какой именно event?
chaotism__ #
13:04
newevent archiveevent faultevent в модуле fm в master ветке
dvolodin #
13:04
chaotism__: https://www.evernote.com/l/ADnFmsNT8rRIsYufpn9OF5cDvrseYpXgb08
chaotism__ #
13:04
default*
13:05
в общем я тем же самым по работе занимаюсь
13:05
перепилил логин
dvolodin #
13:05
вот насчет archive я еще сильно не уверен
chaotism__ #
13:05
вайп коммиты ты видел, там у меня ветка полугодичной давности
13:06
часть моих правок уже было у вас
dvolodin #
13:07
А может быть и стоит вообще все события объединить
aef__ #
13:07
dvolodin: а в башне правок по поводу ssh-agent так и не было?
dvolodin #
13:08
aef__: нет, не было, я его не использую
chaotism__ #
13:08
если поля у событий во много повторяются и методы, то достаточно у них сделать разделения по типу
dvolodin #
13:08
будет патч - буду смотреть
chaotism__ #
13:08
model_map = {
13:08
"N": NewEvent,
13:08
"A": ActiveEvent,
13:08
"F": FailedEvent,
13:08
"S": ArchivedEvent
13:08
}
dvolodin #
13:08
chaotism__: не совсем так
chaotism__ #
13:08
потом во въюхах все равно что то такое
dvolodin #
13:08
смотри
13:08
new event маленький и его разгребает классификатор
13:08
active -- обычно 1 день
13:09
дальше нужные в архив
13:09
https://www.evernote.com/l/ADk9s4fsZxFEnISpssAkrT934SGtu43-JUg
chaotism__ #
13:09
идею я уловил, вопрос при нагрузках, как это будет себя вести, сильно ли упадет скорость
dvolodin #
13:09
вот такое я уже сделал в микросервисах
13:09
да
13:09
даже не только под нагрузкой
13:10
а что будет с индексами
chaotism__ #
13:11
сколько миллионов записей? ок, вынести архивные возможно стоит, хотя у меня вообще их в текстовой лог попросили
dvolodin #
13:12
ну смотри, допустим пишем 100 в секунду
13:12
8.5M записей в день
13:12
в алармы попадает немного
ufir #
13:13
http://ru.aliexpress.com/store/product/HUAWEI-Quidway-LS-S5328C-EI-24S-24LAN-4Combo-Layer-3-network-switch-New/525663_896544434.html
13:13
а элтексы, которые стоят у нас, на наге около 300 тысяч рублей
13:13
а хуавэй на алиэкспрессе 137.5 тысяч
chaotism__ #
13:15
ок, до 10 монго спокойно съест, потом в какой-то момент, через день их надо будет дампить в архивные, ставить задачу с маппером
dvolodin #
13:15
teroni: я еще пару багов поправил, прогони
13:16
chaotism__ там еще на локи можно напороться
13:17
я их именно за локов разносил
13:18
и еще у монги функциональные и sparse индексы только в 3.2 будут
13:18
Да, и еще у меня просьба небольшая ко всем
e_zombie #
13:19
-_-
dvolodin #
13:19
для конкурса нужно показать штат сотрудников, имеющих опыт установки, настройки или разработки под NOC
13:19
нужны граждане россии и не сотрудники РТ
13:20
мне нужны, ФИО, контактный телефон и мыло
13:20
можно в личку, можно на dv@nocproject . org
aef__ #
13:20
dvolodin: http://pastebin.com/Axn56cYx
dvolodin #
13:21
aef__: ssh ключик там еще положить надо
aef__ #
13:21
Там - это где?
13:21
предыдущие task-и прошли успешно
zi_rus #
13:22
я не понял про конкурс
13:23
призы и подарки будут?
chaotism__ #
13:23
если по ноку уже форк
13:23
считаеться ли он конкурсным?
13:23
я с деревни как говорит мой коллега silver , что за конкурс?
silver1 #
13:23
ребят я с деревни, что за конкурс?
e_zombie #
13:24
на внедрение этой поебени в РТ и массовое увольнение персонала в регионах.
13:24
деградации и вымывании умных сотрудников из РТ
aef__ #
13:24
О да! мне эти местные дармоеды никогда не нравились)
dvolodin #
13:25
zi_rus: тендер
13:25
e_zombie: вам другую поебень привезут
zi_rus #
13:25
на инсталляцию нока в РТ?
dvolodin #
13:25
кстати и сравним
e_zombie #
13:26
dvolodin: а с этого момента поподробнее . нам точно ничего не привезут. максимум в нижнем новгороде поставят и всё. как сраный ионикс
ufir #
13:26
в РТ нок не особо нужен
13:26
как показала практика
e_zombie #
13:26
пока официально не принят в работу - да.
ufir #
13:26
конфигосборка да FM
e_zombie #
13:27
а если примут - то тем более
ufir #
13:27
всё
13:27
ионикс уже пару лет стоит
13:27
шаманин мозги ебал одно время с ним
e_zombie #
13:27
откровенный саботаж не даст его эксплуатировать
dvolodin #
13:27
кстати, почем не заработал айоникс?
ufir #
13:27
сев1 тоже
13:27
он работает
13:27
просто им никто не пользуется
13:27
все забили
13:27
и на нок все забьют
e_zombie #
13:27
а потому что экспорт\импорт данных только чере з пидоров в питере.
dvolodin #
13:28
ой красота
13:28
серьезно?
e_zombie #
13:28
это в аргусе.
ufir #
13:28
да
13:28
а аргус - отстой пидорский
e_zombie #
13:28
а ионикс имеет устаревшие БД по хостам.
ufir #
13:28
(извините)
dvolodin #
13:28
то есть с аргусом его не подружили?
e_zombie #
13:28
и прав на апдейт нету.
13:28
я не в курсе.
dvolodin #
13:28
ну понятно
13:28
с СЛТУ его не интегрировали, короче
e_zombie #
13:28
но подозреваю что у нас иониксом не пользуются в принципе
dvolodin #
13:28
да, он бессмысленный совсем в таких условиях
ufir #
13:28
потому что нет нормальной интеграционной шины, епт
dvolodin #
13:29
шина то тебе как поможет
13:29
молись, что у тебя ее нет
zi_rus #
13:29
вы общаетесь с ИТшником, скоро придет служебная записка, заставить всех пользоваться
ufir #
13:29
унифицировать взаимодействие между компонентами хоть
e_zombie #
13:29
zi_rus: за неё распишутся и забьют хуй.
13:29
и будут работть по старому.
[Marael] #
13:30
а для чего пользователь noc-probe в ноке?
ufir #
13:30
zi_rus откуда ты знаешь ? может Володин нажрется и уедет работать в Израиль
zi_rus #
13:30
мне кажется он оттуда приехал
e_zombie #
13:30
потому что начальники смотрят отчёты из смк-шпд но никак не из ионикса
dvolodin #
13:30
ufir: шо ви таки имеете против?
ufir #
13:30
dvolodin там жарко говорят ;)
dvolodin #
13:30
таки да
zi_rus #
13:30
там море рядом
aef__ #
13:30
dvolodin: оно обламывается вот на этом hg: repo="{{noc_repo}}" dest="{{noc_root}}" revision="{{noc_revision}}"
dvolodin #
13:30
х бабушке, в Хайфу
13:30
:)
ufir #
13:30
я был в Беер-Шеве
dvolodin #
13:31
она от моря далеко
ufir #
13:32
это да. меня удивило то, что там продается пиво балтика
13:32
и местные подростки его только и бухают
[Marael] #
13:33
а еще вопрос, конфиг манаджер показывает конфиги из каталога в фс, у меня была старая инстаояция ноке на вируталке из ова на сайте, я ее пытался обновить и все успешно гавкнулось. забекапил этот каталог, можно это скормить чистой инсталяции нока,
13:33
а потом добавить новые устройтсва и указать такие же имена реп, ну или переимееновать
z_pedalkin #
13:34
кто пжласта подскажет можно ли прописывать регэкспы в Validation Rule с handler "Config *MUST* match string" ?
aef__ #
13:34
dvolodin: оно вообще откуда должно repo тащить
13:34
?
z_pedalkin #
13:34
или там только строгое соответствие?
dvolodin #
13:35
z_pedalkin: там есть валидатор для regexp'ов
13:35
отдельный
z_pedalkin #
13:36
dvolodin - как называется?
dvolodin #
13:37
а, не, там по строкам
13:37
нужно по регулярке слабать, да
z_pedalkin #
13:37
ясное дело
dvolodin #
13:37
там где-то были регулярки
13:37
а зачем тебе так именно?
13:38
логгеры по-другому ищутся
z_pedalkin #
13:38
это выбирается из дроп-даун списка handler-ов?
13:39
потому что, скажем, в конфиге у меня могу быть строки типа logging host x.x.x.x может быть y.y.y.y ili z.z.z.z
13:39
или просто logging a.b.c.d
dvolodin #
13:39
а что тебе нужно-то?
z_pedalkin #
13:39
мне нужно узнать есть ли такая строка в конфиге
dvolodin #
13:39
парсеры достают логгеры
z_pedalkin #
13:40
которая просто начинается с logging потому что на какой сислог отправляется - это уже второе дело для мнея
13:40
скажем, это все один и тот же хост, только с разными IP адресами
13:43
и что такое в переводе на русский означает "парсеры достают логгеры "?
13:43
плз
dvolodin #
13:44
https://cp.nocproject.org/p/MbxP
13:45
держи
13:45
z_pedalkin: в managed object в объекте посмотри вкладочку Facts
z_pedalkin #
13:45
да
13:45
я именно там и смотрю
13:45
гран мерси! Это пойдет в релиз?
13:46
или это private patch?
dvolodin #
13:46
я его в микросервисах сдела
13:46
если работает - сделайте backport в develop
13:46
z_pedalkin: факты logger видишь?
13:46
железка какая?
[Marael] #
13:48
так а что по моим вопросам?
dvolodin #
13:48
по сервисам будут соображения?
z_pedalkin #
13:48
C2811
13:49
Cisco 2811
dvolodin #
13:50
там должны быть факты logger
z_pedalkin #
13:51
нету
13:51
нет такого факта
13:51
есть ыныдщпрщые
dvolodin #
13:51
а в конфиге оно есть?
z_pedalkin #
13:51
sysloghost
dvolodin #
13:51
а
z_pedalkin #
13:51
да
dvolodin #
13:51
ну это оно и есть
z_pedalkin #
13:52
а раз уж на то пошло, есть ли какая-нибудь демо-установка?
13:53
чтобы без лишних тупых вопросов можно было посмотреть что и как работает? и потом скопипастить
aef__ #
13:58
dvolodin: а ansible у тебя как бинарник вызывается или прямой питонятиной?
Dmitry1 #
14:01
сервисы взлетели ?
aef__ #
14:11
ну вот. сбежаль. А я только ssh-agent в башне починил
chaotism__ #
14:14
как оно вообще в башне, жизнь кипит?
aef__ #
14:14
chaotism__: если верить биткорзине - последний коммит - 2 ноября
Dmitry1 #
14:14
ага
14:14
https://www.evernote.com/shard/s57/sh/50cd8b2d-7dad-4491-b441-51462c18bcab/cb834f710d8ed595
14:15
если верить дате, то там 13 февраля
14:15
FM тупо умер
aef__ #
14:15
FM умер, но дело его живет!
Dmitry1 #
14:16
У меня не живет
14:16
я на части железок тупо поотключал флажок "is managed" из-за хандлеров
14:17
на циске отключил syslog из-за невозможности подавить алармы
chaotism #
14:18
по дисковери, помню читал, что слабые желески с ним дохнут
Dmitry1 #
14:19
ага
chaotism #
14:19
Dmitry1: убрать из базы или просто засирается все ивентами?
Dmitry1 #
14:20
вот пример дискавери:
14:20
1693 2015-11-03 01:02:24 INFO(6) Safeguard Engine enters NORMAL mode
14:20
1692 2015-11-03 01:00:37 INFO(6) SNMP request received from 10.116.0.211 with i
14:20
nvalid community string!
14:20
1691 2015-11-03 01:00:35 INFO(6) Logout through SSH (Username: mitya,IP: 10.116
14:20
.0.211)
14:20
1690 2015-11-03 01:00:34 WARN(4) Safeguard Engine enters EXHAUSTED mode
14:20
1689 2015-11-03 01:00:10 INFO(6) Successful login through SSH (Username: mitya,
14:20
IP: 10.116.0.211)
aef__ #
14:20
Dmitry1: неоднократно обсасывалось - нок не должен решать твои организационные проблемы
Dmitry1 #
14:20
chaotism: обслуживаю чужой коммутатор, на выходные потушили свет в офисе
14:21
утром пришли и решили посмотреть логи на коммутаторе
14:21
а там 13 тысяч записей login/logout
chaotism #
14:21
батюшки
14:22
это же больше, чем серий в Санта-Барбаре было
Dmitry1 #
14:22
хрен его знает, чего NOC забыл на этом коммутаторе, но он туда долбился каждую минуту
14:23
Другой пример
`kk #
14:23
aef__: потести башню с двумя инсталами (реплику монги). желательно центос+дэб/бубунта.
Dmitry1 #
14:23
срочно меняем коммутатор
aef__ #
14:23
`kk: я и с одной то не могу. на Pull NOC все обламывается.
Dmitry1 #
14:23
вместо него ставим модель попроще, у которой особенность - все команды она дублирует в консоли
14:24
мой напарник пытается настроить его, а ему в консоль постоянно срет login/logout и т.п.
aef__ #
14:24
chaotism: обрати внимание - им проще поставить новый коммутатор, вместо того чтобы грепнуть логи активатора
Dmitry1 #
14:24
третья ситуация
`kk #
14:25
aef__: странно.. у меня на "чистых" исталах норм.
Dmitry1 #
14:25
aef__: кому это им ? монтажникам ? Они должны знать питон ?
aef__ #
14:25
Dmitry1: для грепанья логов питон не нужен - trust me
Dmitry1 #
14:25
aef__: так я тебе по секрету скажу, нету возможности остановить джоб
aef__ #
14:26
Dmitry1: есть :)
Dmitry1 #
14:26
я тебе больше скажу, сейчас уже исправили этот баг
aef__ #
14:26
привалить активатор
Dmitry1 #
14:26
а тогда, даже снятие галочки "is managed" не остановило бесконечное долбление на коммутатор
aef__ #
14:26
`kk: репозиторий нока какой у тебя указан в Env?
Dmitry1 #
14:26
третья ситуация
14:27
у нас своровали субмагистральный коммутатор
14:27
пишем заявление в милицию
`kk #
14:27
aef__: я неделю как не обновлял. может полторы.
Dmitry1 #
14:27
я такой радостный, что NOC хранит все серийные номера железок и SFP модулей
14:27
ан нет, гребанные хандлнеры
14:28
радостно сделали инвентори на новом коммутаторе и затерли данные старого
aef__ #
14:28
Dmitry1: а бэкапы тоже хандлеры затерли?
Dmitry1 #
14:28
бекапы чего ?
`kk #
14:28
aef__: а что вылазит при "Pull NOC" ?
aef__ #
14:28
нока
Dmitry1 #
14:29
aef__: т.е. мне нужно еще и регулярно бекапить базы postgresql и mongodb ?
aef__ #
14:29
`kk: http://pastebin.com/Axn56cYx
14:29
Dmitry1: ты будешь смейаццо - но нок это делает по дефолту
14:30
Dmitry1: и вааще да. Данные надо бэкапить регулярно
Dmitry1 #
14:30
aef__: ткни меня носом в пункт меню web-морды, где я могу посмотреть предыдущие данные inventory железки
`kk #
14:31
aef__: проверь Env на пробелы
14:31
что-то пожее было
aef__ #
14:31
`kk: проверил. нашел пару пробелов в бранче- не помогло
`kk #
14:32
щас попробую
14:32
разрерну
14:32
ос какая ?
aef__ #
14:32
убунта
chaotism #
14:32
залезаешь в монгу и давай пыщь пыщь
aef__ #
14:32
Dmitry1: я инвентори в принципе рабочим не считаю. Оно у меня там 2 железки видит из 6 тысяч
Dmitry1 #
14:33
aef__: потому как dvolodin у людей охоту отбил что-то делать
z_pedalkin #
14:34
Dmitry1 - цэ же опенсорс
14:34
никто никому ничего не обязан. Посмотри на линуксовую лицензию
14:35
Dmitry1 - можешь починить? Почини! А чтобы требовать - цэ только за деньги!
14:35
Dmitry1 - и то не всегда :)
Dmitry1 #
14:35
Цитата из обсуждения, почему забросили игру 0.A.D.
14:35
Это результат плохого изначального проектирования.
14:35
Когда слишком много впихнули второстепенных фич, желая быть как можно более популярными у толпы, не проработав должным образом архитектуру и базовый код.Теперь получили кучу кода, в котором мало кто может разобраться, и мало кто хочет изучать.Если
aef__ #
14:36
Dmitry1: итого твои претензии сводятся к "1) злодеи криво настроили нок 2) че там думать - трясти надо 3) нок не хранит историю инвентори (и даже не обещал это)"
chaotism #
14:37
слабый да уйдут, верные да помогут, аминь
aef__ #
14:37
`kk: глазами посмотрел SQL-дамп. нету там пробелов
chaotism #
14:38
http://m.megamozg.ru/company/yagla/blog/21178/ это про фичи?
Dmitry1 #
14:38
у меня как раз коммитов больше, чем у aef__ и z_pedalkin вместе взятых
aef__ #
14:39
Dmitry1: если твои коммиты не решают твои проблемы - ты что-то не так делаешь, очевидно
zeus__ #
14:39
всем привет
14:40
я ExtJs разработчик
Dmitry1 #
14:40
aef__: я не лезу коммитить в те места, которые писал не я
aef__ #
14:41
Dmitry1: тогда твое мерянье коммитами очевидно не в кассу. Потому как 100% моих патчей решают мои актуальные проблемы
zeus__ #
14:41
ну мне больше интересно, почему человеки писали на Javascript'е такой страшный код? меня пучит каждый раз глядя в код
e_zombie #
14:41
zeus__: потому что быстро быстро и в продакшен.
aef__ #
14:41
zeus__: меня вон с любого жабоскрипта пучит
chaotism #
14:42
zeus__: хуяк, хуяк и в продакшен
e_zombie #
14:42
ты ещё мои говнобашскрипты не видел. чесаться будешь неделю.
zeus__ #
14:42
вот половина приложения через коре написано, а половина так просто набросано. Я не говорю про пистонячью часть
Dmitry1 #
14:42
aef__: я делал несколько сотен коммитов в правила FM. Но Дима засунул туда uuid и манифест, после которых, даже закоммитить одно правило не представляется возможным без десятка телодвижений
zeus__ #
14:42
на пистонячили что кирпичи откладываю
e_zombie #
14:43
я вот свои поделия как начну постить - точно плеваться будешь .
Dmitry1 #
14:43
aef__: я делал несколько сотен коммитов в профили SA, но Дима решил переделать тушенку. Теперь ее невозможно стало тестировать.
e_zombie #
14:44
лучше делитесь по зонам ответственности и помогайте друг другу
Dmitry1 #
14:44
aef__: я делал несколько сотен коммитов в Inventory. Но Дима засунул туда uuid и манифест, после которых, даже закоммитить одно правило не представляется возможным без десятка телодвижений
aef__ #
14:44
Dmitry1: и да. пока я не забыл - я ж тебе обещал SQL на sh
14:45
http://pastebin.com/GnL0PmUL
silver1 #
14:45
Dmitry1: да с тобой жестко обошлись
aef__ #
14:45
работает в полтора раза быстрее чем перловый аналог, и жрет на 60мегов меньше места на диске
zeus__ #
14:45
а чего на модули не разбить самотстоятельные? я уж не спрашиваю про MVC
aef__ #
14:46
реально работающий код загрузки клиентов в брас
Dmitry1 #
14:47
вспомните истории про pyrule, на форуме и в KB были куча примеров, куча решений. Дима сделал хандлеры - и где хоть один коммит ?
14:48
silver1: просто Дима разогнал всех разработчиков, которые хоть что-то делали
14:48
зачем он так сделал - не знаю
aef__ #
14:48
Очевидно не всех
Dmitry1 #
14:48
aef__: а кто остался ?
e_zombie #
14:48
Dmitry1 ну нахера ты срачь разводишь .
aef__ #
14:49
Dmitry1: ну ты же у нас главный коммитер
e_zombie #
14:49
пользы никакой
14:49
надо думать что делать дальше.
14:49
и как эффективно использовать ресурсы что есть .
Dmitry1 #
14:49
e_zombie: у меня на винте валяются несколько сотен почти готовых правил FM
zeus__ #
14:49
мне тут сказали про то что проставятся мне если я фиксану ваш ExtJs
silver1 #
14:49
ребята, билже к делу, что надо пофиксить в extjs чтобы получить проставу?
e_zombie #
14:49
а у меня почти террабайт порнухи снятой за 5 лет и что ?
Dmitry1 #
14:50
догадайся, почему я из не коммичу
e_zombie #
14:50
всем похуй на это
zeus__ #
14:50
что надо править?
silver1 #
14:50
тут есть разработчик онлайн
aef__ #
14:50
silver1: скроллинг больших таблиц. в Managed object например
14:50
по прикидкам пороговое число - в районе 96
zeus__ #
14:51
это не проблема. куда будете мне слать ящик вискаря? :)
14:51
или чем проставляться там будете
14:51
и через 15 минут будет правка
aef__ #
14:52
а уж правки в башне - вааще отдельная песня. меня там задолбало обновлять кривые формы
zeus__ #
14:52
я могу на MVC переписать клиента всего, сколько мне отсыпите золотишка? :) недели 2 правда понадобится на перепись чуда лесного
14:53
надеюсь на бентлей мне хоть хватит или может на колесо от бентлей
aef__ #
14:55
zeus__: ща придет володин, скажет что в микросервисах уже все переписано и все совсем не так плохо
chaotism #
14:57
aef__: сделали пагинацию
14:58
aef__: сделать пагинацию*
Dmitry1 #
14:58
aef__: я не понимаю, почему ты так защищаешь текущий функционал
aef__ #
14:59
Dmitry1: совсем упоролся?
14:59
chaotism: угу. и кнопку "выделить всё" - давно хочу
ufir #
15:01
бля
15:01
а что такое пагинация ?
zeus__ #
15:01
постраничный вывод
Dmitry1 #
15:01
aef__: я указал на реальную проблему. в текущей реализации NOC нет возможности управлять ивентами
ufir #
15:01
а.
zeus__ #
15:01
это он предлагает альтернативу скроллинга использовать
ufir #
15:01
неее
15:01
протев
Dmitry1 #
15:02
chaotism: у нас уже был постраничный вывод, потом Дима сделал бесконечный скроллинг, теперь снова будет постраничный вывод ?
zeus__ #
15:04
я могу вообще сделать постраничный скроллинг. Чтобы все вместе было
e_zombie #
15:07
https://bitbucket.org/nocproject/noc/pull-requests/108/add-basic-huawei-ma5600-dslam-profile
Dmitry1 #
15:11
лучше порнузу давай
e_zombie #
15:12
https://pp.vk.me/c628629/v628629151/1e2c2/8-rSy16xDvA.jpg
15:14
https://pp.vk.me/c622525/v622525151/9b50/th5qd_eFau8.jpg
15:15
в пн будет новая. в среду отснял и за выходные обработаю.
15:15
вагина там неплохая.
`kk #
15:16
aef__: тупо чистая виртуалка.
15:16
TASK: [node | Pull NOC] *******************************************************
15:16
changed: [ubuntu1]
15:17
репа стандартная
aef__ #
15:17
`kk: У меня destination host - localhost - возможно это имеет значение
`kk #
15:18
попробуй вручную с локалхоста дёрнуть репу
15:20
может локалхост не может в инет выйти )
aef__ #
15:21
hg clone https://bitbucket.com/nocproject/noc
15:21
real URL is https://bitbucket.org/nocproject/noc
15:21
destination directory: noc
15:21
requesting all changes
15:21
adding changesets
15:21
типа работает
`kk #
15:23
а не
15:23
он же с башни репу берёт
aef__ #
15:23
Dmitry1: проблему указал. Но нифига не понял что тебе говорили в ответ
15:23
`kk: http://localhost:8888/hg указать?
`kk #
15:24
у меня в /var/log/syslog
15:24
ansible-hg: Invoked with repo=http://192.168.160.196:8888/hg/VQ3W6R executable=None force=False dest=/opt/noc purge=False revision=feature/microservices
Dmitry1 #
15:24
aef__: Дима тупо игнорирует проблему
aef__ #
15:24
Dmitry1: он правильно делает, что игнорирует ту херню которую ты несешь
Dmitry1 #
15:25
aef__: сформулируй проблему по другому, может тогда он поймет
15:26
aef__: или ты скажешь, что тоже не понял, в чем проблема ?
`kk #
15:26
aef__: да. попробуй так локално и в башне в settings указать 127**
aef__ #
15:27
Dmitry1: я сформулировал. Нужен proxy_handler. Ну или полноценная реализация аспектов
15:28
`kk: та же фигня - 404
Dmitry1 #
15:28
aef__: ответь мне на такой вопрос, обычный инженер, без доступа root на сервер и знания питона, сможет управлять этим proxy_handler ?
aef__ #
15:29
Dmitry1: зависит от его реализации очевидно
`kk #
15:30
aef__: hg clone http://192.168.160.196:8888/hg/VQ3W6R /tmp/ :)
15:30
destination directory: VQ3W6R
15:30
requesting all changes
Dmitry1 #
15:30
aef__: т.е. через proxy_handler идут абсолютно все ивенты ?
`kk #
15:30
что-то типf http://127.0.0.1:8888/hg/VQ3W6R
aef__ #
15:31
Dmitry1: нет. те которые настроены
Dmitry1 #
15:31
ответь мне на такой вопрос, обычный инженер, без доступа root на сервер и знания питона, сможет это настроить ?
15:32
и без правки вручную classification rules
aef__ #
15:32
Dmitry1: ты еще не определился, что именно настраивать
Dmitry1 #
15:32
стоит задача
15:33
циска генерит десятки ивентов секунду
`kk #
15:33
aef__: и, наверное, попробуй убрать везде 127.** и вписать везде "внешний" адрес (192.168/172.16 и тд) (и везде без "fqdn" )
Dmitry1 #
15:33
на ней настроено SLB, причем у разных физических серверов одинаковый приоритет и разное количество максимальных подключений
15:34
когда у одного сервера уже состояние MAXCONNECT, то у другого еще есть свободные подлючения
15:35
нужно не генерировать аларм на первый сервер, а генерировать на второй
15:35
т.е.
15:35
игнорировать
15:35
%SLB-6-REAL: Real 10.117.0.16 (VPNFARM) has changed state to MAXCONNS
15:35
и поднимать аларм при
15:35
%SLB-6-REAL: Real 10.117.0.8 (VPNFARM) has changed state to MAXCONNS
15:35
IP серверов могут меняться
15:36
aef__: как настроить такой proxy_handler ?
aef__ #
15:37
Dmitry1: такой - это какой?
Dmitry1 #
15:38
такой, где обычный инженер, без доступа root на сервер и знания питона, сможет добавить или убрать IP сервера из исключений
aef__ #
15:38
Dmitry1: как написал - так и настроишь
Dmitry1 #
15:40
т.е. мне нужно поднять еще один web сервер, где сделать свою webморду, с помощью котлорой инженер будет настраивать этот хандлер ?
aef__ #
15:41
Dmitry1: понятия не имею. Это твой хандлер
Dmitry1 #
15:41
aef__: ты издеваешься ?
15:41
ты рассказывал, что надо сделать proxy_hadler, и все будет зашибись
15:43
(17:24:11) aef__: Dmitry1: я сформулировал. Нужен proxy_handler. Ну или полноценная реализация аспектов
aef__ #
15:43
Dmitry1: ты вообще понимаешь разницу между абстрактным интерфейсом и его конкретной реализацией?
Dmitry1 #
15:45
я реализацию хоть чего-нибудь жду уже два года
15:45
понимаешь, я тупо могу поправить это место в классификаторе, и тогда мне будет хорошо, а Диме плохо
15:45
Но как нормальный человек, а так не делаю
aef__ #
15:46
`kk: сейчас вообще не стартует.
`kk #
15:47
hg или сама башня
aef__ #
15:47
башня
15:48
гм
15:48
пристрелил
15:48
оно почему-то очень не хотело умирать
`kk #
15:48
da
15:48
проверяй процессы
chaotism #
15:49
зайдите в noc.fm.classifier.__init__Classifier в этом демоне
15:49
load_rules
`kk #
15:49
иногда всплывает такое....
chaotism #
15:49
load_triggers
15:49
поправте как вам удобно и работайте дальше)
15:50
кстати идея запихнуть демон не так как остальные в fm весьма оригинальна
aef__ #
15:52
Dmitry1: если тебе религиозные предпочтения мешают форкнуть классификатор - причем тут Дима, и с чего ему будет плохо?
Dmitry1 #
15:53
aef__: и каждый пользователь NOC будет поддерживать свой fork ?
15:53
прошло 10 лет
15:53
NOC версия 20.0
aef__ #
15:53
Dmitry1: use quilt, Luke
15:53
я поддерживаю. И не особо страдаю по этому поводу
Dmitry1 #
15:53
из всех файлов только "python"
chaotism #
15:53
я думаю если бы это было бы очень нужно, давно бы взяли команду разработчиков и его зарефакторили
15:54
хотя как говорил ваш дима, пилиться что-то на яве и пхп
aef__ #
15:54
chaotism: всекак обычно упирается в финансирование
`kk #
15:54
aef__: запусти деплой. посмотри в syslog линк на репу. потом по ней попробуй локально выкачать. какая-то локальная проблема.
aef__ #
15:54
`kk: я чистый инсталл сделал. сейчас pull идет
`kk #
15:54
может прокси ещё какой есть...
aef__ #
15:54
откуда прокси на локалхосте?
`kk #
15:55
ты не поверишь.. )))
chaotism #
15:56
дык если он уже в ростелекоме, выйграл тендер в индонезии и нашлись деньги на джава пхп разработчиков
15:56
может будет скоро нок на джаве и все ваши страдания закончатся?
aef__ #
15:57
`kk: не поверю. это все же мой локалхост)
15:57
chaotism: на жабе ладно - лишь бы не на похапе
Dmitry1 #
15:57
нет, тогда noc перестанет поддерживать все, что не относится к ростелекому
chaotism #
15:58
дык наверно вэб морда на пыхе, а все выстраданные классификаторы и т.д. на джаве со своим рест апи
Dmitry1 #
16:00
и поддержка оборудования сократиться до одного вендора, рекомендованного ростелекомом
aef__ #
16:02
`kk: http://pastebin.com/b1BuMY7Y
16:03
`kk: до кучи я в Services ничего настроить не могу
`kk #
16:03
в башне в env в репе пробелы
16:04
в setting не забыть прописать url
16:04
башни
16:04
ну и про периодически F5 ты знаешь =))
aef__ #
16:05
`kk: так нету там пробелов
`kk #
16:06
у меня так было когда прописал - https://bitbucket.com/nocproject/noc
16:06
и в конце оставил 1 пробел
chaotism #
16:06
aef_: вместо строки вернулся None
16:06
такие дела
16:06
на пастебине
aef__ #
16:06
chaotism: я как бы догадался. вопрос откуда он там
`kk #
16:07
я так понял, что он не может распарсить repo url
aef__ #
16:07
`kk: Чукча умный, чукча дампы смотрит youhttp://10.120.254.123:8888/hg/VQ3W6R/'
`kk #
16:11
т.е по ссылке открывается и на "локалхосте" проходит hg clone * ?
16:12
и версия башни а7
aef__ #
16:12
да
`kk #
16:12
ну прям хз...
16:12
и права на дир. правильные
16:13
т.е юзер башни может писать в папку
16:13
ничего пока другого в голову не идёт
aef__ #
16:15
гм. на ровном месте прошло
16:17
и управление сервисами заработало
`kk #
16:18
=)
aef__ #
16:19
`kk: за интерфейс сервисов хочется кинуть в володина какашкой
`kk #
16:20
да. интерфейс башни это жесть
16:23
и это. посмотри потом плз. /sys/kernel/mm/transparent_hugepage/enabled
16:23
т.е после ребута должно быть disable
aef__ #
16:27
гм. N попыток, вернул репу на дефолтный и чето вроде пошло
16:28
хотя грузит все равно с локального
`kk #
16:28
yt gjyzk
16:28
не понял
16:29
она с битбакета пулит и с себя раскатывает по нодам своим
aef__ #
16:32
ммать
16:32
в этот раз оно обломалось на попытке собрать numpy
z_pedalkin #
16:44
Что есть "башня"/Tower?
`kk #
16:45
aef__: смотри ещё как можно
aef__ #
16:46
`kk: ну оно сейчас нок выкачало - я теперь туда локально могу зайти и без выпендрежа дебажить
`kk #
16:46
так смотрю инв
16:46
NOC_ENV=test1 ./bin/tower-inv --list | sed 's/\,/\n/g'
16:46
т.е перед этим в вэбе всё настраиваю
16:46
а потом он только как репа
16:46
и с консоли
16:46
NOC_ENV=test1 ./bin/ansible-playbook -i bin/tower-inv var/tower/playbooks/test1/ansible/site.yml
aef__ #
16:46
я пошел другим путем /opt/noc# ./bin/pip install numpy
`kk #
16:46
я не про это )
16:47
у меня на бубунте python-numpy не стоит...
16:49
z_pedalkin: нок мелкими демонами (микросервисы) которыми рулит ansible
16:49
башня - примерно как ansible tower
aef__ #
16:49
`kk: оно и не надо в базовой системе. его нок в virtualenv тянет
z_pedalkin #
16:50
`kk - cool. thanks
aef__ #
16:51
Found existing installation: numpy 1.10.1 Uninstalling numpy-1.10.1: Successfully uninstalled numpy-1.10.1 Running setup.py install for numpy
`kk #
16:51
./bin/pip list | grep numpy
16:51
пусто
aef__ #
16:51
оно нашло проинсталлированный numpy, снесло его и обломалось поставить заново
`kk #
16:52
хотя у меня ещё нода не развернулась
16:55
numpy (1.9.2)
16:55
хехе
16:56
у тебя новее ставится.
aef__ #
16:57
Угу. А старая не собирается
17:01
и лог совершенно мутный
17:02
объяснить что ли ноку что ему нужна 1.10.1
`kk #
17:02
странно. у меня поставилось с 0.9
aef__ #
17:04
`kk: я кажеццо нашел в чем дело
17:05
эпичненько
17:06
А тут материться можно? я всего одну строчку. и больше не буду
17:07
Эти <censored> <censored> запихнули в зависимости версию numpy которая не собирается без ТРАМПАРАРАМ! subversion
17:07
и еще земляным червяком
`kk #
17:08
хехе
aef__ #
17:08
`kk: Subversion как build-depends для числодробилки. Subversion, Karl!
`kk #
17:09
гениально. чего у ж тут <censored> =)
17:09
но я не понял откуда у тебя другая версия вылезает
aef__ #
17:09
другая вылезает потому что я руками pip install numpy сделал
17:09
оно честно поставило 1.10
17:10
А у володина прибита гвоздями 1.9.2
17:10
Так что земляным червяком
`kk #
17:11
а
aef__ #
17:13
все. нафиг. пойду я с горя пятницца
z_pedalkin #
21:58
ping
Tweet
Share this page
Share this page: Tweet