История одного обновления. Миграция на Zabbix 5.0 LTS с минимальными потерями
Я Олег, системный администратор в команде Timeweb, и в этой статье я расскажу, как мы перешли на актуальную версию Zabbix с минимальным простоем без потери функциональности. Здесь будет описан наш опыт — опыт избавления инфраструктуры от неактуального ПО и последствий хардкода.
Обновить Zabbix или сохранить наработки? Вот в чем вопрос
Так уж сложилось, что сотрудники, ответственные за оперативное реагирование на проблемы, для наблюдения использовали один экран Zabbix с дополнительными самописными виджетами, захардкоженными в Zabbix GUI на PHP. Как, когда и почему это началось, история умалчивает… Часть данных запрашивалась из API Zabbix, часть — из сторонних систем. Всё это отображалось в виде таблицы. Кроме этого, существовала и вручную созданная таблица в базе Zabbix для хранения данных одного из виджетов.
Основной недостаток такого наслоения виджетов — невозможность обновить Zabbix на актуальные версии с сохранением наработок. Поэтому наше первое правило клуба при миграции в новый мониторинг и воспроизведении функционала, — отказ от модификации кода GUI Zabbix.
Как это правило может быть реализовано? Хочешь красивые графики / дополнительную информацию — используй возможности Grafana.
Я опущу здесь этапы установки и настройки ПО. Если вам требуются инструкции, можно посмотреть документацию на официальном сайте.
Что было на старте:
Муки выбора ПО
Для формирования аналога основного экрана с жизненно важными графиками мы выбрали Grafana. Этот продукт, наверное, даже не требует представления, самое простое решение из всех принятых в процессе перехода.
Для интеграции Zabbix + Grafana используем незаменимый плагин от Alexander Zobnin. Встроенный в него набор инструментов позволит организовать работу ответственных за наблюдение без существенных изменений в логике взаимодействия с GUI.
Да, использование Grafana в качестве базы для создания дашборда было доступно и в Zabbix 2.2.2, но не применялось: нужно было время на обучение команды и переход. В этот раз мы приняли для себя волевое решение — переключить работу сотрудников на новый инструмент, объединив переход на Grafana с обновлением Zabbix. Одновременно решаем сразу две задачи!
В качестве баз данных мы выбрали актуальную на момент работ версию PostgreSQL 12.4. Для увеличения интервала хранения решили использовать плагин TimescaleDB 1.7.4.
Тестирование
До начала работ мы провели синтетический нагрузочный тест связки Zabbix 5 + PostgreSQL 12.4 (+ TimescaleDB 1.7.4). Версии ПО выбирались по принципу актуальности из stable-релизов.
Для тестирования использовали проект Zabbix Server Stress Test. Количество метрик (NVPS) мы удвоили по сравнению со старым Zabbix, чтобы оценить, как повлияет увеличение числа наблюдаемых хостов в будущем. Под такой нагрузкой тестовая среда была оставлена на месяц.
Помимо проверки самого zabbix-server, это также позволило нам оценить работу плагина TimescaleDB. Глобально мы установили значения для истории значений и трендов, чтобы привести к единому порядку, а также включили сжатие.
Коэффициент сжатия на самой объемной таблице: 20 (20 ГБ сжаты до 1 ГБ). Средний коэффициент сжатия по всем таблицам: 19.
Определившись с решением, мы наметили для себя 2 плана действий: подготовительный план и план миграции. Они пригодятся, если вы тоже готовитесь к подобным изменениям.
План подготовительный
1. Поднять и настроить два экземпляра PostgreSQL с репликацией master-standby
2. Установить и настроить Zabbix 5 на работу с новым PostgreSQL
3. Перенести: регулярные выражения, value mappings, группы хостов, правила авторегистрации
4. Экспортировать / импортировать шаблоны:
— оформить в в виде примечания “В качестве инструмента работы из командой строки использовалась утилита https://github.com/unioslo/zabbix-cli”;
— так как формат экспортируемых ресурсов между релизами 2.2.2 и 5.0 претерпел изменения, необходимо было поправить XML, чтобы их принял новый Zabbix;
— переходить дальше не следует, пока все шаблоны не будут внесены в новый Zabbix, так как успешность импорта хостов зависит от наличия привязанных к ним шаблонов.
5. Добавить в конфигурацию zabbix-agent дополнительный сервер Zabbix
С этого момента данные начнут поступать в оба Zabbix (за исключением trapper-сообщений).
6. Экспорт / импорт хостов
Этот шаг нужен для того, чтобы получить базу для построения дашбордов средствами Grafana. Возможности авторегистрации не подходят из-за наличия персонально настроенных макросов на части серверов, которые нужны для корректной работы триггеров и сбора данных.
7. Создать дашборды на базе Grafana
Настраиваем источник данных на работу с новым Zabbix. Воспроизводим основной экран старого Zabbix средствами Grafana (+ плагин).
8. Анализ работы нового Zabbix
Оцениваем, как сервер справляется с нагрузкой:
Для подбора параметров PostgreSQL использовалась утилита timescaledb-tune. Параметры работы zabbix-server и GUI не претерпели серьезных изменений, лишь немного увеличены размеры кэшей и количество обработчиков.
10. Предварительная модификация скриптов, взаимодействующих с Zabbix API
К уже имевшимся скриптам добавился небольшой скрипт-обертка для синхронизации LDAP-списков с участниками Zabbix-групп. В остальных скриптах достаточно было изменить реквизиты подключения, проверить, что новый API корректно отдает нужные данные.
План миграции
1. Вводим мораторий на любые изменения в старом Zabbix
2. Очистка от ранее перенесенных хостов Zabbix
Так как за время подготовительных работ могли быть сделаны изменения на некоторых хостах, чтобы не искать расхождения, удобнее сбросить хосты полностью.
3. Если с момента подготовительных работ появились новые — переносим в свежую инсталляцию: регулярные выражения, value mappings, группы хостов
4. Создаем группы пользователей. Воспроизводим права доступа на группы хостов
5. Экспорт / импорт шаблонов
6. Экспорт / импорт хостов
7. Перенос веб-проверки, правила авторегистрации
В 2.2.2 не поддерживается экспорт данных элементов.
8. Проверка поступающих данных
На данном этапе оцениваем, что после миграции триггеры продолжают работать, как и ожидалось. Сравниваем возникающие события в обоих Zabbix.
9. Поменять местами серверы в конфигурации zabbix-agent
С этого момента основным инструментом наблюдения становится новый Zabbix.
10. Переключение скриптов, обращающихся к API Zabbix, на новый сервер
Схема взаимодействия компонентов мониторинга
Оптимизация
После завершения миграции мы решили проанализировать получаемые значения и оптимизировать их.
Для обнаружения маунтов и сетевых адаптеров мы использовали встроенный ключ, а невозможность фильтровать по нескольким макросам приводила к созданию лишних item’ов, с которых не требовалось собирать показания. Например:
Похожего результата можно добиться и на старом zabbix: например, использовав собственные правила обнаружения.
Плюшки
На “Хабре” меня заинтересовала эта статья по применению Git для хранения ресурсов Zabbix, поэтому мы написали упрощенный вариант того, что предлагалось в работе «Zabbix Review: как организовать code review для конфигурации мониторинга».
Заключение
В заключении я хотел бы сказать, что работа по “миграции” на новый мониторинг не ограничивается исключительно техническими операциями, — существует набор регламентов по обработке событий, реакции на них. Конечно, команде потребуется некоторое время, чтобы привыкнуть к изменившимся инструментам анализа данных. Не забудьте рассказать коллегам об изменениях в инструментах заранее, до внедрения. Это поспособствует адаптации и подсветит важные вопросы.
Уже в процессе использования нового мониторинга часть дашбордов претерпели изменения, появились новые на основе отзывов коллег, непосредственно использующих их.
Что нового в Zabbix 5.0 LTS
Новая версия стала еще удобнее, безопаснее и доступнее.
Вот лишь краткий список наиболее важных функций, включенных в Zabbix 5.0 LTS.
В дополнение к существующим официальным пакетам и готовым решениям, Zabbix 5.0 поставляется также на следующих платформах: SUSE Linux Enterprise Server 15, Debian 10, Ubuntu 20.04, Raspbian 10, Mac OS/X, RHEL 8, CentOS 8, MSI для Windows Agent.
Ознакомьтесь со всеми доступными платформами: Downloads
Zabbix интегрирован с облачными провайдерами, признанными стандартами в своей отрасли:
SAML-аутентификация для механизма единого входа
SAML используется для обеспечения единой точки аутентификации у надежного поставщика идентификационных услуг, что означает, что пользовательские учетные данные никогда не покидают границы брандмауэра. Поддержка SAML позволяет интегрировать Zabbix с различными локальными и облачными поставщиками идентификационных услуг, такими как Microsoft ADFS, OpenAM, SecurAuth, Okta, Auth0 и многими другими.
Безопасный и надежный мониторинг
Zabbix 5.0 значительно улучшен для более безопасного мониторинга:
Храните свои секреты под замком
Zabbix 5.0 поддерживает секретные пользовательские макросы для хранения любой конфиденциальной информации, такой как пароли и API токены, которую вы не хотите раскрывать конечным пользователям.
Масштабируемость и производительность
Zabbix 5.0 поддерживает опциональное сжатие собранных данных в TimescaleDB. Помимо общих преимуществ TimescaleDB (автоматическое партицирование, производительность и масштабируемость), это решение также помогает еще больше повысить производительность и снизить затраты на хранение данных.
Интерфейс Zabbix был также улучшен для мониторинга и управления миллионами устройств.
Новый агент Zabbix теперь официально поддерживается
Новый агент предлагает широкий спектр новых возможностей и расширенные функции мониторинга для Linux и Windows:
С полным списком новых функций можно ознакомиться в документации. Документация.
ВАЖНО! Существующий агент Zabbix по-прежнему будет поддерживаться.
Мониторинг, которым легко управлять и пользоваться
Zabbix 5.0 был значительно улучшен с точки зрения удобства использования и автоматизации, что помогает решать ряд задач:
Гибкость в мониторинге того, что вам нужно
Zabbix 5.0 предлагает улучшенный функционал для достижения более гибкого мониторинга:
Автоматизация и обнаружение
Автоматизация является неотъемлемой частью Zabbix. В Zabbix 5.0 она становится еще лучше, благодаря поддержке целого ряда новых возможностей:
Улучшенная визуализация
Представление данных в читабельном формате имеет решающее значение в работе. Zabbix 5.0 делает визуализацию данных еще лучше:
Встроенная интеграция с системами ITSM
Zabbix 5.0 представляет новый набор готовых к использованию интеграций с облачными и локальными ITSM-системами
Добавлено официальное руководство по разработке webhook, чтобы стандартизовать и упростить создание интеграций на их основе
Больше интеграций с ITSM: Интеграции
Встроенные интеграции с системами оповещения
Zabbix 5.0 представляет новый набор готовых интеграций с признанными системами оповещений и уведомлений
Больше интеграций с системами оповещения: Интеграции
Новые и улучшенные шаблоны и плагины
Большая часть существующих шаблонов обновляется, регулярно добавляются новые шаблоны и плагины для мониторинга различных сервисов, приложений и устройств.
Большинство шаблонов теперь использует функцию умного автоматического обнаружения различных ресурсов
Больше шаблонов и плагинов: Интеграции
Настраивайте Zabbix в соответствии с вашими потребностями и делайте свой вклад!
Создайте свой шаблон, плагин или webhook и добавьте в официальную библиотеку Zabbix, выполнив три шага:
Поздравляем! Ваше решение официально поддерживается, и тысячи пользователей Zabbix будут благодарны вам за усилия!
Вышел Zabbix 5.0 LTS
Состоялся релиз свободной системы мониторинга с открытым исходным кодом Zabbix 5.0 LTS.
Zabbix – универсальная система для мониторинга производительности и доступности серверов, инженерного и сетевого оборудования, приложений, баз данных, систем виртуализации, контейнеров, ИТ-сервисов, веб-сервисов, облачной инфраструктуры.
Система реализует полный цикл от сбора данных, их обработки и преобразования, анализа получаемых данных, и заканчивая хранением этих данных, визуализацией и рассылкой оповещений с использованием правил эскалаций. Также система предоставляет гибкие возможности расширения методов сбора данных и оповещений, а также возможности автоматизации через API. Единый веб-интерфейс реализует централизованное управление конфигурациями мониторинга и распределением прав доступа различным группам пользователей. Код проекта распространяется под лицензией GPLv2.
Основные улучшения версии 5.0 LTS:
Улучшена безопасность и надёжность мониторинга за счёт:
Другие значительные улучшения:
Из коробки Zabbix предлагает интеграцию с:
Официальные пакеты доступны для актуальных версий следующих платформ:
Доступна быстрая установка Zabbix для облачных платформ:
Для перехода с более ранних версий необходима лишь установка новых бинарных файлов (сервера и прокси) и нового интерфейса. Zabbix автоматически проведёт процедуру обновления. Установка новых агентов не потребуется.
С полным списком всех изменений вы можете ознакомиться в документации.
Установка Zabbix 5.0 из репозитория
Время никогда не стоит на месте. И вот, относительно недавно вышла в свет новая версия прекраснейшей системы мониторинга, Zabbix 5.0. Установка Zabbix 5.0 LTS из репозитория и будет являться основной темой сегодняшней статьи. Дело как обычно не хитрое, главное знать что делаешь.
Установка Zabbix 5.0 LTS из репозитория
Установка Ubuntu Server 20.04 – 18.04
Классическое начало для любой статьи подразумевающей установку с нуля 😉
Ubuntu Server 20.04 – 18.04 – Изменение имени сервера
Про имя сервера – всё понятно. У каждого своя система. Мой сервер будет называться ag-zabbix-server-1
Ubuntu Server 20.04 и 18.04 – Установка статического IP
Возможны оговорки. Прям ваще без статического IP не обойтись разве что в сетях без DHCP сервера совсем. Ну или если вам очень важно на 1000% быть уверенными что сервер не потеряет свой IP адрес процессе работы, при этом вы не уверены за свой DHCP сервер. В моём случае у меня в сети поднят DHCP сервер проинтегрированный с локальной DNS зоной местного контроллера домена на samba4 и я буду обращаться к своему Zabbix Server 5.0 по имени ag-zabbix-server-1.adminguide.lan. Потому мне просто хватит зафиксировать арендованный заббиксом адрес на DHCP сервере :). Вот кстати упомянутая инструкция: Контроллер домена Ubuntu 20.04 – Ubuntu 20.04 AD-DC
Устанавливаем репозиторий Zabbix
Дабы не оставалось ненужных хвостов и всё само потом удалилось, перейдем в temp:
Скачиваем пакет который добавит репозиторий Zabbix
Обновляем данные APT
Установка Zabbix 5.0 LTS Server
Установка пакетов
Эта команда установит вам в систему сам Zabbix 5.0 LTS Server конфигурированный на работу с PostgreSQL, фронтэнд, apache и Zabbix Agent
Создание пользователя zabbix через psql
Теперь нам необходимо создать пользователя и базу данных для Zabbix 5.0 LTS
Эта команда создаст пользователя с именем zabbix
Флаг –pwprompt означает что команда createuser попросит вас указать пароль для учётной записи в процессе создания
Создание БД для Zabbix Server 5.0
Параметр -O zabbix задаёт имя владельца создаваемой базы. Следующий параметр zabbix определяет имя самой базы данных. То есть мы создаём базу данных под названием zabbix и её владельцем будет пользователь с именем zabbix
Теперь в свежесозданную БД, нам необхоимо импортировать исходную схему и данные с помощью команды:
Настройка пароля от БД
Указываем в настройках Zabbix Server пароль для доступа к БД. Открываем на редактирование с правами администратора файл zabbix_server.conf
Далее в открытом редакторе, с помощью комбинации Ctrl+W открываем поиск, туда вбиваем DPB (или полностью “DBPassword=”) и нажимаем Enter. Поисковик подсветит нам область с настройкай пароля базы данных. Там указываем пароль который мы задали при создании пользователя zabbix для PostgreSQL 12. Область настройки пароля БД должна принять следующий вид:
Задаём пароль для доступа к БД
Незабудьте раскоментировать строку с паролем убрав знак # в начале статьи! Да, в данном варианте инсталяции, пароль от БД лежит в открытом виде в файле конфигурации, и любой пользователь обладающий админскими правами сможет этот пароль подсмотреть в текстовичке. Насколько это страшно конкретно для вас, вы должны решить для себя самостоятельно.
Настройте вашу таймзону
В файле /etc/zabbix/apache.conf раскомментируйте пункт php_value date.timezone и укажите ту таймзону которая вам необходима. От этого будет зависеть то каким временем будет оперировать заббикс сервер. Ссылку на список всех поддерживаемых таймзон можно найти в конце статьи.
Запуск Zabbix Server и Zabbix Agent
Теперь к нашему серверу можно подключиться по адресу http://ip_сервера/zabbix
Если вдруг вы забыли IP, узнать его можно командой ip addr show У меня в сети настроен контроллер домена с DHCP сервером проинтегрированным с DNS зоной. Потому я буду подключаться на сервер по его имени: ag-zabbix-server-1.adminguide.lan
Настройка фронтэнда Zabbix 5.0 LTS
Заходим на наш сервер через http
Сразу попадаем на окно приветствия
Всё что нам тут нужно сделать – это просто нажать Next Step
Проверка соответствия
Попадаем в окно проверки соответствия. Вам нужно чтобы напротив каждого пункта у вас было написано OK
Проверка соответствия требованиям
Если всё везде OK – переходим к следующему пункту нажав Next Step. В противном случае задавайте вопросы в комментариях, будем разбираться 🙂
Настройка подключения к СУБД
После того как мы убедились что все необходимые проверки пройдены, нам необходимо настроить подключение фронтенда к базе данных.
Настройка подключения к СУБД
Заполняем параметры подключения в соответствии с достигнутыми на данный момент результатами. Типа базы данных PostgreSQL, имя базы данных zabbix, пользователь zabbix, пароль, тот что указали про создании пользователя postgresql zabbix
Указываем параметры подключения фронтэнда к Zabbix серверу
Подключение к серверу Zabbix 5.0
Это больше на тот случай, когда высоконагруженная инсталяция и фронтэнд располагается на отдельном сервере. В нашем случае можно просто нажать на Next Step. Я так же рекомендую заполнить поле Name.
Проверяем все заданные параметры
Если нас всё устраивает – нажимаем Next Step, иначе возвращаемся и приводим настройки в соответствие с желаемыми
Завершаем установку
Так же стоит обратить внимание, что пользователь под которым работает apache имеет доступ на запись в папку /usr/share/zabbix/conf/ потому файл zabbix.conf.php был создан автоматически. Если вдруг, по какому-то странному стечению обстоятельств, у вас у пользователя этих прав не будет, Zabbix попросит вас скачать файл конфигурации и укажет куда его нужно положить. Если бы в моём случае этих прав не было, вместо собщения об успешной установке, я бы получил ссылку на скачивание конфига и просьбу разместить его по адресу обведённому красным.
Заходим в админку Zabbix 5.0 Server
Таки нажав на Finish, мы попадаем на логинскрин в админ панель нашего новоиспечённого сервера
Стандартный логин и пароль от фронтэнда Zabbix Server, при описанном в статье методе установки, будет:
Zabbix Server 5.0 Default Login and Password
Username: Admin
Password: zabbix
Admin – с большой буквы.
Жмём на Sign in и резво набигаем всё конфигурировать.
P.S. После успешной авторизации мы увидим следующее:
Главный экран Zabbix Server 5.0 – Dashboard
В качестве заключения, хотелось бы сказать что рабочий мониторинг позволяет избежать многих бед. Да, ваше начальство даже не узнает о том что вы избежали того или иного косяка и будет считать что вы дармоед и получаете свои деньги за то что ничего не делаете. Тупых людей в мире много и с этим нам приходится жить. Потому необходимость наличия в собственном парке серверов телеметрии и диагностики – каждый должен обосновать для себя самостоятельно.
Полезные ссылки:



















