Как стать автором
Обновить

Комментарии 34

Я в 2.2.3 такого не замечал (пакет из debian).
Но на 2.2.5+ (сейчас 2.2.7) пулер забит на 75% при 500 процессах. Уже все перекрутил все так и держится на 75%
Сейчас очень редко очередь прыгает выше 100 элементов
Количество узлов сети — 875
Количество элементов данных — 70101
Все это на одном сервера с 6 ядрами 16 Gb RAM и MD RAID10 (4 винта)
А какая версия SNMP?.. У меня SNMPv3 и как я понял bulk request это для v2 и v3 only.
Собственно ошибка плавающая. Тот же bulk request поэтому и использует механизм подбора максимального числа итемов в запросе, потому что разное оборудование по разному реагирует на это.

Что касается забитого пулера то интереснее new values per second

В принципе узкие места заббикса прекрасно известны: БД, диск, сеть.

Я в свое время упирался в БД, дефолтные настройки того же MySQL конечно ни о чем.
SNMPv2 и кое где SNMPv1
Требуемое быстродействие сервера, новые значения в секунду — 710.89
Сеть — отметаем там гигабит, а используется около 1-2 мегабита
Диск — очень радко wa бывает 5-10%
БД — может быть, но я до 1500 значений доводил все было также.
а увеличение числа поллеров не приводит к снижению занятости?.. и я бы еще в сторону таймаута посмотрел бы. У меня была проблема похожая, я сначала решал ее увеличением таймаута (и все было плохо), а потом просто переделал алгоритм получения «медленных» значений.
тамаут 2 секунды.
а потом просто переделал алгоритм получения «медленных» значений.
— а об этом можно по подробней?
ну у меня есть определенные параметры, у которых плавающее время получения значения, зависит от нагрузки на сервер и т.д.

Чтобы не подвисали процессы из-за длинных таймаутов (это же сквозная настройка), я написал отдельный скрипт, который получает эти значения и складывает их в определенные файлики по формату. А заббикс уже из файла выдергивает (это быстро понятное дело). Такой немного «топорный» механизм, но мне очень помог.

Понятно что не везде применимо…
который получает эти значения и складывает их в определенные файлики по формату.

А почему не zabbix_sender сразу эти данные?
В последних релизах всех веток активно чинят SNMP, скорее всего указанная проблема уже решена.

То что прокси при обновлении требуют стирания БД — нормально, совместимость формата баз обещается лишь в пределах ветки.

И да, средняя утилизация пулеров заметно возросла несколько релизов назад.
я проверял 2.2.7 там проблема еще присутствует.

про прокси, я же не против ;) в самом начале Update release про это написано, просто для создания настроения написано, что все пошло не так с самого начала.
Если есть желание и сможете по пунктам описать как воспроизвести проблему, могу озадачить вопросом разработчиков (у нас коммерческая поддержка). В личку.
www.zabbix.com/rn2.2.7.php

:: Optional SNMP bulk requests
Added configuration file option EnableSNMPBulkRequests to disable SNMP bulk requests.
и?..
зачем отключать? это же очень удобная штука!..
Начиная с 2.4.0 включать и выключать SNMP bulk можно индивидуально для каждого интерфейса узла сети (хоста).
тогда понятнее…
но в моем случае практически все устройства были затронуты этим багом.
Не пострадали только девайсы у которых мало SNMP метрик, типа роутеров с малым количеством туннелей и проч.

а как я уже написал сама идея очень зачетная не хотелось ее терять
Вручную/через API, крайне неудобно. Сделайте пожалуйста через шаблоны тоже :-)
Что то вы поздно засуетились, недавно только обновил до Zabbix 2.4.2, логично было бы обновляться до него.
+1, на всех актуальных 2.4.x мы такого не поймали (16k хостов, 250k итемов, в основном SNMP). Поймали многое другое, но его уже починили :-)
Что поймали? Собираюсь тоже обновиться с 2.0.10
Если у вас меньше инсталляция, то можете почти смело обновляться (не забывая о резервных копиях) :-)

Сейчас у меня отрытыми висят тикеты о малополезности автообнаружения, о паре минорных проблем веб-интерфейса и важный для нас ZBX-8448.
У меня аналогичная инстлляция, правда snmp юзается по минимуму. С чем именно столкнулись? :)
См. комментарием выше. Остальное пофикшено и доступно в соответствующих release notes.
2.2 это LTS версия. Кроме того, 2.4 не было у меня в портаже на тот момент.
Я конечно могу и из исходников все собрать, но суппорт этого потом будет очень «дорогой».

Кстати посмотрел исходники 2.4.1 там эта проблема тоже в наличии.
Если уж переживать о суппорте то генту там не место ) все таки не продакшен дистирибутив
холиварить не буду ;)
Эх жаль конечно так хотел вас прижучить )))))
Ну так идите в support.zabbix.com, заведите тикет, приложите свой патч. Скорее всего ответят что в 2.4.3 для одиночных значений bulk выключен и попросят обновиться :-)
+
насчет патча… у меня слишком прямолинейное решение. нет оно работает, и работает хорошо, но правильнее делать по другому. Нужно во-первых проверять msgMaxSize, во вторых генерировать согласно этому msgMaxSize запросы, и только потом уже обрабатывать ошибку. У меня патч это такой финт ушами, который ловит ошибку, и пользуется имеющимся механизмом подбора размера bulk.
Если честно, я так и не понял, в чём заключается проблема, кто и где неправ, как это решено (ну не понимаю я код на Цэ) и как надо было решать. Поэтому и предлагаю пообщаться с разработчиками для всеобщей пользы. Но подозреваю что в 2.4.x сия проблема уже решена другим методом (или проявляется лишь в редких условиях).
Спасибо за интересную статью. Открыли тикет support.zabbix.com/browse/ZBX-9163. Скорее всего проблема существует как в 2.2.x так и 2.4.x. Будем исправлять.
большое спасибо!
Кстати если инстанс большой — рекомендую сразу перевести БД прокси на mysql. С sqlite вы сначала упретесь в производительность дискового I/O, потом перенесете БД на рамдиск и в конце поймаете что-нибудь такое.

p.s. В оф. репе LTS ветки недавно появилась версия 2.2.8.
Не забудьте housekeeper обратно включить, при апгрейте он отключается…
да, есть такое дело, я не сразу сообразил почему диск стал забиваться.
хотя давно пора переходить на партицирование, все руки не доходят.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории