Опус о том как не нужно выбирать и имплементировать систему мониторинга
Здравствуйте уважаемыее.
Позвольте рассказать вам о длинной истории одной компании, с весьма небольшим штатом команды
Итак, два года назад было решено что SolarWinds ipMonitor, которым мы успешно пользовались довольно много лет, исчерпал свои возможности. Компания росла, количество серверов в клетках росло, количество самих клеток так-же росло и было решено что ping, telnet и поиск слова в source это весьма недостаточно. Помимо этой системы так-же было великое множество скриптов написанных разными инжинерами и естественно без документации. Регулярно скрипты ломались, иногда не очевидно, и в итоге страдало качество предоставляемого сервиса.
На одной из vmWare презентаций моим начальником была замечена мониторинговая система с «огромным потенциалом». Куча индикаоров, кнопочек. графиков, инструментов анализа, вобщем очень много красивого и сладкого для неизбалованного начальника отдела
Проблемы начались через минуту после того как исчерпалось время консультанта и нас передали отделу поддержки клиентов. Началось всё с того что вендору наш старший предоставил план деплоймента в котором указовался его тестовый sandbox. Вендор наверняка был счастлив продать людям с тремя десятками виртуалок и одной базой данных систему мониторинга в топовой комплектации, но ведь речь на самом деле шла о нескольких сотнях виртуалок на нескольких шасси, с несколькими кластерами серверов баз данных, да ещё и географически на разных концах континента. В тот момент мы представить не могла насколько прожерливой окажеться FMS в плане ресурсов. После создания всех агентов баз данных, vCenter, и инфраструктуры мы вдруг поняли что оно висит намертво. Заонок в поддержку, нас тыкают носом в план деплоймента и заявляют что если-бы мы сообщили заранее о размере наших нужд то и речь шла-бы о других требованиях. Через два дня уволился старший инжинер. Так на сцене появляюсь я — в принципе всё-ещё далеко не senior и слова в выборе проектов для себя не имеющий.
Первой мыслью было «А не уволиться-ли мне сейчас». Но ведь русские не сдаются, правда? Сначала я выбил выделеные сервера под это веселье. Два старичка Dell 2950 с ESXi на них. Выбить отдельный сервер под базу данных я не смог и потому пришлось использовать виртуалку на них-же ещё и под это.
Небольшое описание архитектуры FMS
FMS состоит из:
1. Management Server. Этих серверов может быть несколько в active/passive кластере собственной имплементации, это центральная точка которая всем командует.
2. Foglight Agent Manager. Диспетчер агентов это windows service (daemon если Вы умеете и хотите) которых может быть установлено несколько для разных нужд. Мы таким образом разделили vmWare, SQL staging, SQL production и OS что-бы при проблеме с каким-то одним типом агента не приходилось прерывать все наблюдения.
3. Foglight Agent. Агенты могут быть на все случаи жизни, как купленные у вендора так и написанные самостоятельно.
4. Database. Тут всё ясно — у нас SQL Server 2008.
Довольно быстро я понял что работать с тем что есть просто невозможно. Во первых система тормозила даже при адекватных ресурсах. Страничка с менеджером правил могла грузить список правил произвольное количество времени от пяти до пятнадцати минут. Звонок в поддержку имел неожиданный результат — о проблеме знали и обещали починить в следующей версии… через квартал. Тем временем начальство требовало результатов и никакие обоснования о том что наша версия тормозит не принимались, ведь потрачена весьма немалая сумма денег. Скрипя зубами и изобретая окольные пути всё более менее заработало через ещё шесть недель и тут перевели часы. При чем тут DST, справедливо спросите вы? Дело в том что в этой довольно давно разработанной системе был баг. Нет, такого не бывает. Ведь ТАКИЕ баги в продакшн не попадают. При смене времени база данных начинала неконтролируемо расти. За два дня достигнув пределов диска вдруг перестали приходить сообщения о наблюдениях и именно тут произошло ЧП и мы о нем узнали от наших клиентов. Это было весьма неприятно, был разбор полетов, лишение премий и прочие приятные вещи. Звонок в поддержку, опять «Да, конечно мы знаем об этой проблеме, вот вам скриптик.» На вопросы о том когда будет патч поддержка четкий ответ дать не могла и патч так и не вышел до следующей смены времени, правда теперь мы знали и ждали манифестации этой проблемы и она не разочаровала.
Попользовавшись системой некоторое время мы начали понимать что заказаные нами кастомизации во первых просто не работают, а во вторых они просто были не нужны. Нужны другие, но вот незадача — вендора купил Dell и ценовая политика несколько изменилась. Начальство требует что-бы я срочно сам написал требуемые кастомизации. Мысль о том что неплохо-бы уволиться посетила меня снова, ибо я ни разу не программист. Вот не лежит душа у меня к этому и всё тут. Но ведь русские не сдаются, правда? Осваиваю groovy script на котором всё это работает. В процессе обучания понимаю что практически половина купленного нами функционала может работать лучше если я элементарнейше перепишу это под наши конкретные нужды. Переписываю и попутно прекращаю говорить начальству что я ненавижу этот продукт потому-как это уже на 30% мой собственный продукт, ведь за всё время имплементации кроме мени ни один инжинер к нему вообще не прикоснулся, хоть я и просил о помощи.
И вот настал заветный час — вышла новая версия в которой, о Великий Вишну, были исправлены как проблема с загрузкой многих страниц, так и ненавистный баг с DST. Признаюсь — в этот день я праздновал. Конец постоянному нервному тику и походами за кофе «пока загрузиться страница». Именно это событие наконец приблизило наступление заветного maintenance mode. Теперь я только иногда, по просьбам трудящихся, меняю пороги срабатывания оповещений и изредка пишу новые агенты, которые не имеют ничего общего с инфраструктурой, а просто оповещают о уже вполне клиентских проблемах, таких как блокировка учеток пользователей нашего продукта. Теперь я — lead и теперь я точно знаю как нельзя выбирать и имплементировать ПО.
Попробую изложить свои, вроде-бы очевидные, выводы.
1. Нельзя покупать сразу полный функционал без твердой уверенности что он нужен. Убедиться что он действительно нужен несложно, ведь можно нанять консультанта имеющего опыт работы с именно этим ПО. Поверьте — это намного дешевле чам заплатили мы за картриджи которые теперь не используются.
2. Нельзя спешить. Ничего страшного не случилось-бы если мы ещё пол года посидели на том что уже было. Несколько старых серверов можно найти всегда и никто, кроме менеджера по продажам от вендора, вас не гонит запратить здесь и сейчас.
3. Нужно понимать специфику персонала который имеется в наличии. Не стоит поручать анализ всего одному человеку, особенно если человек плохо мотивирован.
4. Не стоит эконоить на цене имплементации. Правда, не стоит. Вендор обычно действительно хочет вас как можно скорее привести к production ибо именно тогда ему заплатят полностью, да и консультанты тоже имеют свою выгоду если всё пройдёт хорошо. Если вендор говорит что это займет месяцы с их персоналом, это значит что так скорее всего и есть. Если в бюджете нет денег на это — остановитесь, ибо всё равно заплатите, но уже больше.
Автор: Roto