nocproject.org
06:21
,,
07:00
не ставьте последний коммит.
07:00
локов становится больше и всё в гавно скатывается
07:03
поздно) на самом деле уже несколько дней что-то не то... в noc-discovery.log как-то совсем пусто, задачи где-то залипают
07:04
у меня десяток МО не могут отдискавериться несколько дней
07:04
e_zombie: "локов становится больше" найчи как посмотреть
07:05
запускаешь на каком-нибудь объекте, например, interface_status_discovery - next run меняет на "сейчас", в монгу в schedules.inv.discovery тоже пишет, но не запускает
07:06
select * from pg_locks
07:07
07:07
у меня munin рисует графики.
07:11
к проблеме со, скажем так, медленным запуском запланированных задач это вряд ли связано, там же вроде в монге всё живёт
07:12
хотя да, maptask и reducetask в pg
07:18
<TSergey> "у меня десяток МО не могут отдискавериться несколько дней"/ Я думал так только у меня.
07:18
и давненько так, я думал у меня что-то сломалось
07:19
07:20
Но у меня такое не только с дискавери. У меня в алармах мо которые нормально пингуются уже 15 дней висят
07:21
fumufu86: сделай селекты, добавь в таск
07:23
если у тебя база в локах хер ты что сделаешь нормально.
07:27
Ещё проблема из 2000 доступных скриптов, используется 1-2. Но при этом при запуске ран дискавери ноу или чего нибудь вручную выполняется по пол дня
07:29
ещё при запуске ран командс, на 150 мо. половина отваливается по таймауту. Хотя раньше и 600-1000 не было проблемой.
07:30
вот вот.
07:42
ууууу. меня размер базы прыгнул в два раза
07:43
кхм. с 257 -> 333
07:43
не два.
07:43
но пик заметный
07:59
lexus-omsk: да ты шутник-)
08:13
dvolodin: :) всё плохо после коммитов. локов стало в два раза больше
08:18
локи не страшны
08:18
точнее
08:18
считай количество локов, у которых granted = False
08:19
тем не менее факт, что задачи шедулятся, но не запускаются
08:19
может это и не с локами постгреса связано, но оно есть
08:20
но не с последним коммитом связано
08:20
он просто не пишет понапрасну в reducetask
08:21
и не трясет ее
08:22
dvolodin: а в чем же дело? дискавери 10 объектов длится третьи сутки
08:22
noc=# select count(*) from pg_locks where granted = false;
08:22
count
08:22
-------
08:22
0
08:22
(1 row)
08:25
noc=# select count(*) from pg_locks where granted = false;
08:25
count
08:25
-------
08:25
0
08:25
(1 row)
08:33
noc=# select count(*) from pg_locks where granted = false;
08:33
count
08:33
-------
08:33
0
08:33
(1 строка)
08:46
ну вот, блокирующих локов нет
08:47
dvolodin: а чего тогда происходит-то?
08:48
в noc-discovery.conf посмотри
08:48
# Maximum threadpool size
08:48
max_threads = 30
08:49
это количество обработчиков в пуле
08:50
можно его расширить
08:50
там возможна ситуация, при которой обработчики заняты тяжелыми методами вроде config_discovery
08:50
который cpu bound
09:06
dvolodin: нажать на одном Run и не дождаться окончания его обработки, что поменялось-то у меня как было около 1000 МО, так и осталось.
09:06
научи как увидеть чем заняты обработчики
09:17
аналогично количество MO меняется на +50 в месяц, при 1500 первоначальных.
09:18
транзакции появились
09:19
введение транзакций увеличило, к примеру, время выполнения interface_discovery с 3 секунд до 123 секунд
09:20
До одного из обновлений, нок-активатор занимал 17-30% процессора. Сейчас его почти не видно в процессах
09:20
evyscr: научи как смотришь
09:20
noc-scheduler.log
09:21
сравнение времени выполнения с transaction = False и без оного
09:21
у себя я первым делом поднял интервал uptime_discovery до 300 секунд
09:23
evyscr: noc-discovery.log
09:23
uptime_discovery имеет смысл пускать раз в 15 минут
09:23
зачем?
09:23
зачем noc-discovery.log?
09:24
впрочем, туплю
09:24
это я уже конкретных выискивал
09:25
dvolodin: говори чего делать, дискавери не работает
09:25
TSergey: ты уже поднял интервал uptime_discovery?
09:25
зря
09:25
делай 600
09:26
тема производительности шедулера будет вставать очень остро, да
09:27
а где это сделать, что-то я такого ни в конфиге дискавери ни в главном не вижу
09:28
TSergey: в профилях
09:28
managed objects profile
09:30
Min.interval в SA|Setup\Managed Object Profiles ?
09:31
спасиб
09:33
сделал
09:33
но Run по прежнему висит колом, на МО, вот на одном вижу как config_discovery висит
09:33
после /etc/init.d/noc-launcher stop нок разве должен открываться?
09:34
dvolodin: чего происходит? скрипт отрабатывает мигом, Run в дискавери висит колом
09:34
так вы min или max в 600 ставите?
09:34
у меня max и так был 600
09:35
а min - это же повторение при неудачной попытке... или нет?
09:35
Минимальный, скорее. Чтоб не так часто рыпался.
09:36
я не понимаю чего присходит
09:36
этого никто не понимает
09:36
в SA\Monitor\Scripts 4 скрипта
09:37
по 10 МО за три дня до интерфейс дискавери так и недобрались
09:37
ща вовсе одни скрипт
09:38
смотри, что в постгресе творится
09:38
чем нок сейчас занят-то?
09:38
например, pg_stat_activity
09:39
напиши чуть подробней, плс
09:39
это база?
09:40
11 rows
09:41
похоже это мое дискавери висит
09:42
три в in transction
09:43
ежели у тебя порт не равен -1, то можно отследить процесс
09:43
все лезут через юникс-сокет
09:44
чтобы изменить, надо в noc.conf прописать host = 127.0.0.1
09:44
в [database]
09:45
два постоянно висящих (у меня) в idle in transaction процесса - noc-notifier и noc-classifier
09:48
угу, теперь разные client_port
09:48
pymunin есть в репах
09:48
yum install PyMunin.noarch
09:48
munin-run pgstat -debug
09:48
evyscr: и как узнать кто это?
09:49
netstat -nap | grep 5432 | grep python
09:49
ps afxw
09:49
для бзди - искать аналоги
09:51
17297 ? Ss 0:09 \_ postgres: noc noc 127.0.0.1(33559) idle
09:51
17298 ? Ss 0:00 \_ postgres: noc noc 127.0.0.1(33560) idle in transaction
09:51
17300 ? Ss 0:02 \_ postgres: noc noc 127.0.0.1(33561) idle in transaction
09:51
17301 ? Ss 0:00 \_ postgres: noc noc 127.0.0.1(33562) idle in transaction
09:51
17303 ? Ss 0:00 \_ postgres: noc noc 127.0.0.1(33565) idle
09:51
17313 ? Ss 0:00 \_ postgres: noc noc 127.0.0.1(33567) idle in transaction
09:51
17495 ? Ss 0:00 \_ postgres: noc noc 127.0.0.1(33713) idle
09:52
ООООООбля. у меня БД постгри мухнет как на дрожжах. просто линейно.
09:54
после /opt/noc# /etc/init.d/noc-launcher stop не один из процессов нока не остановился. обновления стали накатываться и по вебу доступ остался.
09:54
это нормально?
09:57
ну, четыре шедулера уже есть
09:58
добавил дополнительный сброс статистики по использованию потоков в noc-discovery
10:05
чет SA\Monitor отвалился :(
10:09
а нет, это он так на перезапуск реагирует
10:11
dvolodin: рассказывай чего копать еще, Run в SA\MO\Edit\Discovery зависает, что при этом происходит?
10:11
прямо в интерфейсе зависает?
10:12
TSergey: посмотри, для этой железки другие методы discovery сейчас не выполняются?
10:12
у меня не зависает, но и в run не переходит, только дату next run меняет
10:13
это нормально
10:13
в run его перегоняет шедулер
10:13
dvolodin: как посмотреть? (таких у меня 10 штук)
10:13
TSergey: да хотя бы во вкладке discovery
10:13
раньше почти сразу переходил (пара секунд максимум)
10:14
dvolodin: во вкладке --- другие не выполняются
10:14
ну да
10:14
так, погодите, у меня идейка есть
10:14
Run только на одном
10:15
lexus-omsk: у тебя так и для старых? на новых такой ведел
10:15
*такое
10:16
на любом вроде, да вообще после перезапуска дискавери что-то зашедулил, что-то даже успел запустить - и всё, часов 5 прошло - ни одной записи в логе
10:17
о а на старых нажимай, не нажимай Run, ничего не еняется
10:17
*не меняется
10:25
я все больше понимаю почему тебе нравится нок
10:25
10:26
а другие варианты пробовал?
10:26
openNMS
10:26
например.
10:26
гыгыгыгы.
10:26
там тот ещё адок и пиздецок (с)
10:27
e_zombie: не, я сразу и безнадежно влюбился в нок
10:27
мнда. я думал это я извращенец.
10:27
и в обещание кабельного инвентори
10:27
а тут оказывается есть ещё хуже
10:27
всяко
10:28
я пытался занести тестовый сегмент в crosspro, есть такая система
10:31
после ответа разработчиков: "Импорт данных - сложная операция. Обычно наши клиенты, по договору сопровождения, высылают нам требования, какие данные они хотят загрузить импортом, далее мы готовим и тестируем шаблоны, и высылаем клиенту вместе с инс
10:31
dvolodin: нок? :)
10:38
++
10:39
dvolodin: ну давай, выкладывай
10:41
а есь что-нибудь на подобии opennms или zenoss, только нормально работающее, пусть и уёбищное?
10:41
ну там чтобы графики снимались через rrdtool и чтобы автодискавери был
10:47
PavelGloba: что есть "нормально работающее"
10:47
выкатил мегафикс
10:47
мне самому страшно
10:47
ты внутрь посмотри
10:47
система мониторинга с построением графиков в этом формате
10:47
ээээ чёт не видна его в коммитах
10:47
битбакет пока не видит
10:48
opennms у меня например переставал в какой-то момент графики снимать, пока его не ребутнешь
10:48
PavelGloba: почему именно rrd?
10:48
есть ещё какой-нибудь формат, который место не жрёт?
10:48
NOC с роксом жрет меньше
10:49
что то не видна коммита
10:50
e_zombie: уже видно
10:50
DEBUG:south:south execute "DELETE FROM sa_maptask" with params "[]"
10:50
DEBUG:south:south execute "DELETE FROM sa_reducetask" with params "[]"
10:50
DEBUG:south:south execute "ALTER TABLE "sa_maptask" ADD COLUMN "stop_time" timestamp with time zone NOT NULL;" with params "[]"
10:50
в общем там все в diff понятно
10:51
максимальное время выполнения задач всегда определялась reduce task
10:51
Ну хорошо. Или с этим.
10:51
когда мы перестали использовать их для запуска одиночных задач, стало непонятно, когда пректащать ее по таймауту
10:52
мнда. коммандочки знатные
10:52
e_zombie: это лучше, чем лепить костыль в коде
10:53
чёт оно у меня стоит и альтер долго делает
10:58
ну и чего должно произойти? Run так и тупит
10:58
и меняет время Last Run не меняя Status
10:59
типа живой
11:01
или что-то должно сначала убиться?
11:10
у меня пока никаких улучшений не видно, запуск Run также тупит
11:11
TSergey: SELECT id, managed_object_id, map_script, next_try, retries_left, status, script_timeout, stop_time FROM sa_maptask ORDER BY next_try;
11:11
и похоже столько всего запустилось, что SA\Monitor не может прочухаться
11:11
вот так можно посмотреть, что сейчас выполняется
11:12
11:12
это первый экран
11:13
noc=# SELECT count(*) FROM sa_maptask;
11:13
count
11:13
-------
11:13
23523
11:13
(1 row)
11:14
вероятно всё выполняется?
11:15
count --- 3
11:15
r 11321
11:16
TSergey: причем они отработали почти все
11:16
status = "C"
11:17
noc=# SELECT count(*) FROM sa_maptask WHERE status != 'C';
11:17
count
11:17
-------
11:17
25481
11:17
(1 row)
11:17
а сделай status = 'R'
11:18
noc=# SELECT count(*) FROM sa_maptask WHERE status != 'R';
11:18
count
11:18
-------
11:18
28345
11:18
(1 row)
11:18
сорри
11:18
noc=# SELECT count(*) FROM sa_maptask WHERE status = 'R';
11:18
count
11:18
-------
11:18
107
11:18
(1 row)
11:22
Как остановить нок если он на /etc/init.d/noc-launcher stop и sudo service noc-launcher stop не реагирует, при удалении процессов их перезапускает?
11:22
сотнями по таймауту отваливаются
11:24
kill
11:24
убиваешь родителя, затем - потомков
11:25
fumufu86: я килю "noc-launcher start", отсальные, как правило тоже гибнут
11:25
noc=# SELECT count(*) FROM sa_maptask WHERE status = 'F';
11:25
count
11:25
-------
11:25
31240
11:25
(1 row)
11:25
так это должно работать?
11:26
select map_script, status, count(*) from sa_maptask group by map_script, status;
11:26
F - это failed?
11:27
наверное
11:28
11:28
это страничка, не всё
11:29
аптаймы что-ли выключить
11:29
W -- новые задачи, которые ожидают запуска
11:29
R -- запущенные
11:29
C -- успешно завернешшые
11:29
F - завалившиеся
11:30
noc=# SELECT count(*) FROM sa_maptask WHERE status = 'W';
11:30
count
11:30
-------
11:30
4116
11:30
(1 row)
11:30
TSergey: ябать у тя фэйлов...
11:30
noc=# SELECT count(*) FROM sa_maptask WHERE status = 'F';
11:30
count
11:30
-------
11:30
36974
11:30
(1 row)
11:30
TSergey: допиши там в конец еще ORDER BY 3 DESC
11:30
а нок ущербен при работк с фэйлами
11:31
по наблюдениям
11:31
иной раз может и колом встать
11:32
TSergey: вот и ответ на твой вопрос
11:32
DLink'и у тебя нихрена не работают :)
11:32
TSergey: а в failed scripts что-нить есть?
11:32
dvolodin: это у тебя не работает
11:32
да, все падает по таймауту
11:33
debug-script всё покажет нормально
11:33
dvolodin: у меня только нок не работает, сорри
11:33
эта, тормози нок
11:33
сноси всё из таблицы
11:33
лимиты проверяй на сессии активаторов
11:33
эту раскоряку нок уже не преодолеет
11:34
скорее всего - слишком много пытаешься выполнять одновременно
11:34
сколько активаторов в пуле и сколько скриптов на них
11:34
оно встречается на мизерном количестве оборудования
11:34
стопанул
11:35
dvolodin: все по дефолту
11:35
всегда хватало
11:35
только до 100 скриптов поднимал
11:35
100 скриптов
11:36
сколько активаторов в пуле?
11:37
dvolodin: так всё-таки, где ответ на рост длительности дискавери?
11:38
dvolodin: вероятно один
11:38
TSergey: понятно
11:38
запусти хотя бы 4
11:39
не хватает
11:39
рекомендовали по количеству процов, это виртуалка
11:39
эм
11:39
а load avg какой?
11:40
народ говорит, что загрузка проца в минимуме
11:41
load average: 0.05, 0.62, 1.44
11:41
ну запусти их штуки 4 сразу по 100 сессий
11:41
он не успевает у тебя разгрести очередь
11:42
где добавлять активаторы? в вебе?
11:42
в конфиге для начала
11:43
но почему активатор не успевает разгрести очередь? какие записи в логах смотеть?
11:46
и, вообще говоря, нахрена дискавери по одному элементу идёт в map/reduce?
11:50
evyscr: а как еще?
11:50
они независимы
11:50
TSergey: в noc-launcher.conf
11:51
добавить config.1 ?
11:52
ок, можно на тот же noc-activator.conf ?
11:53
файлик тебе скинуть ?
11:53
noc-launcher.conf ? там же просто
11:53
где еще нужно прописать?
11:54
а добавлять активатор с дургим именем?
11:54
dvolodin: кто независимы? речь про один конкретный дискавери по одному конкретному мо.
11:54
нет, с тем же
11:54
это пул будет
11:54
evyscr: и?
11:54
TSergey больше ничего не надо
11:54
там ровно одна задача
11:54
в процессах есть
11:54
ща будм базу смотреть
11:55
для ровно одной задачи нужен механизм map/reduce?
11:56
(непараллелящейся, разумеется)
11:57
и 1000 скриптов я поставил
11:59
доели что-ли: All activators are busy in pool 'default'
12:00
SELECT count(*) FROM sa_maptask WHERE status = 'W';
12:00
всего 175 штук
12:00
500
12:01
и опять до чуть больше 200
12:01
ну погруппируй опять
12:02
select map_script, status, count(*) from sa_maptask group by map_script, status;
12:02
это?
12:02
угу
12:02
можешь с order'ом
12:03
так я базу же не чистил
12:03
чего мы увидим?
12:04
12:04
dvolodin: кстате, в sa - monitor неплохо бы добавить поле scripts: max, а не только current
12:04
вот он у меня не работает сейчас
12:05
DLink.DxS.get_interfaces | R | 814
12:05
каждый будет выполняться две минуты
12:05
и это, у тебя Dlink.DxS сколько всего девайсов?
12:06
reports - Managed Objects Summary
12:07
DLink.DGS3100 14
12:07
DLink.DES21xx 82
12:07
dvolodin: какого хрена запускается новая версия дискавери при незавершившейся прежней?
12:07
сорри, я убег
12:08
огромное спасибо, оставлю это дело, может разгребет
12:08
ха. сломали что-то ?
12:08
логер есть, значит завтра дочитаю
12:08
дискавери падает с трейсом и постоянно рестартует
12:08
дык, давно уж сломали
12:08
self = <noc.inv.discovery.daemon.DiscoveryDaemon object at 0x7fdb6423a510>
12:08
------------------------------------------------------------------------
12:08
END OF TRACEBACK
12:08
2015-07-10 15:05:40,795 [noc-discovery] Removing pidfile: /var/run/noc/noc-discovery.pid
12:08
2015-07-10 15:05:40,796 [noc-discovery] STOP
12:08
2015-07-10 15:05:44,720 [noc.lib.perf] Stats are disabled
12:08
2015-07-10 15:05:44,720 [noc.lib.threadpool] Pool settings: name=pool start_threads=1 max_threads=30 min_spare=1 max_spare=7 backlog=30
12:08
2015-07-10 15:05:44,720 [noc-discovery] Initializing solutions
12:09
и так постоянно
12:09
у меня так не падает
12:09
ufir: трейс мне на почту пришли
12:09
ufir: ты того, кидать концовку без начала?
12:10
все, теперь прям ушел
12:10
господа, делайте ваши ставки, что это опять bad unicode
12:13
ну, скрипта нет, окай
12:15
ufir: вижу, сейчас поправлю
12:17
пофиксил
12:36
спасибо ;) теперь заработало
12:50
какие-нибудь изменения есть?
12:53
я не помню, было ли ето
12:53
2015-07-10 15:36:08,812 [noc.lib.scheduler.job] [inv.discovery][interface_discovery][42] UNHANDLED EXCEPTION (2015-07-10 15:36:07.612822)
12:53
BRANCH: develop TIP: 8afb51520477
12:53
PROCESS: ./scripts/noc-discovery.py
12:53
WORKING DIRECTORY: /opt/noc
12:53
EXCEPTION: <class 'mongoengine.errors.ValidationError'> Unable to dereference <class 'noc.inv.models.interface.Interface'>:533219a27e85c95907cb5663
12:53
START OF TRACEBACK
12:53
ну это может как-то на жунипере локально скрипт глюкнул
12:55
это, похоже, висячие сабы остались
12:55
с удаленного интерфейса
12:56
кстати да.. запросто
12:56
ну и еще какие-то 2015-07-10 15:36:09,046 [noc.lib.scheduler.job] [inv.discovery][interface_discovery][287] Missed ifindexes for: Eth 1/25, Eth 1/24, Eth 1/21, Eth 1/20, Eth 1/23, Eth 1/22, VLAN 2002, - и так далее
12:56
судя по названию интерфейсов - какой-то фттбшный коммутатор
12:59
и раньше в логи дискавери постоянно всякое сыпалось, а щас что-то ничего почти нет
13:00
а, нет. поперло
13:00
да, на missed ifindexes затыкается надолго
13:00
разбираюсь
13:01
н-да. похоже падает что-то опять
13:02
рестуртую нок, начинают бежать всякие мессаги по разным логам. как только приходит [287] Missed ifindexes for: в лог дискавери - все файлы перестают изменяться
13:04
да, точно
13:11
да
13:16
еще один фиксик закоммитил
13:18
ну что зачинили багу?
13:23
ээ
13:23
логи активаторов стремительно засрало
13:23
2015-07-10 16:22:26,668 [script] Ignoring unknown interface Po 1: Invalid interface 'unrouted VLAN 3121'
13:23
2015-07-10 16:22:26,668 [script] Ignoring unknown interface Po 1: Invalid interface 'unrouted VLAN 3122'
13:23
из живых остались только логи noc-classifier.log
13:24
в noc-discovery снова прилетел 2015-07-10 16:22:24,157 [noc.lib.scheduler.job] [inv.discovery][interface_discovery][287] Missed ifindexes for: Eth 1/25, и все сдохло
13:24
или несдохло, хз. веб работает вроде
13:27
гг не я пока не буду старый инстал обновлять
13:27
месяц не обновлял точно
13:28
все, в логи активаторов тоже больше ничего не прилетает ;)
13:29
чертовы транзакции, блин
13:29
понял, чего он там виснет
13:29
:)
13:32
ура, до создателя дошла бага!))))))))
13:33
у меня загрузга проца на серваке с 32 ядрами и 16 гигами DDR4 была овер 3000%
13:33
@classmethod
13:33
def run(cls, object, script, params=None, timeout=None):
13:33
object = cls.resolve_object(object)
13:33
t = MapTask.create_task(object, script, params, timeout)
13:33
while True:
13:33
for mt in MapTask.objects.filter(id=t.id, status__in=["C", "F"]):
13:33
if mt.status == "C":
13:33
result = mt.script_result
13:33
else:
13:33
крал 3000 процентов блядь
13:33
result = None
13:33
mt.delete()
13:33
return result
13:33
time.sleep(1)
13:34
бага в том, что когда все это запущено в транзакции, MapTask.objects.filter() будет видеть только то, что сам записал
13:34
а не то, что ему выдал SAE
13:34
dvolodin, т.е. старое будет висеть и не убиваться?
13:35
и не контролироваться что там жрет все?
14:07
насчет жрать - нужно смотреть, какой процесс
14:37
пролечил залипание на уточнении ifindex
14:52
хм, чот я не помню таких ошибок 2015-07-10 17:50:14,016 [noc.cm.engine] [AGG-CENTR-05] Creating template error
14:52
2015-07-10 17:50:14,016 [noc.cm.engine] [AGG-CENTR-05] Define template (deftemplate MAIN::error
14:52
(slot type)
14:52
(slot obj)
14:52
(slot msg))
15:24
<dvolodin> чертовы транзакции, блин
15:25
ну, кто ещё не верит в силу моих предсказаний?-)
18:55
верю) давай вангуй еще что сломают
Share this page
Share this page: