Zabbix
Прошлое, настоящее и будущее
О чем я буду говорить?
Немножко истории
Настоящее: Zabbix 3.0
Будущее
О команде Zabbix
Нас 30 человек
Офисы в Риге, Токио и Нью-Йорке
Зарабатываем предоставлением услуг вокруг Zabbix:
поддержка, обучение, разработка, решения под ключ
В Японии предлагаем интересные продукты:
Что мы делаем?
• Строим открытую систему мониторинга которой
можно доверять
• Не только для IT, но и IoT и другие применения
• Помешаны на качестве и хорошем коде
• Думаем о простоте поддержки
Прошлое
С чего начинался Zabbix
История: 1998
• Изначально использовался Perl, но не долго
• Основные архитектурные решения
Язык C для критичных частей
Язык PHP для WEB интерфейса
SQL back-end
Язык C
+ Низкоуровневый, близок к железу
+ Эффективный код: быстрый
+ Минимальное использование ресурсов:
CPU и память
+ Практически нет зависимостей
+ Один раз написал, запускай где хочешь
- Медленная разработка
- Проблемы с памятью, локами,
поинтерами
Язык PHP
+ Легко быстро научиться писать
плохой код
+ Доступен на всех платформах
+ Активно развивается в последнее
время
- Динамическая типизация
- Для хорошего кода нужна дисциплина
- Интерпретируем: ошибки во время
выполнения
SQL back-end
+ MySQL, PostgreSQL, Oracle, DB2, SQLite
+ Транзакционность и целостность данных
+ Стандартный API: SQL
+ Легко разворачивать
- Масштабируемость
- Высокая доступность и redundancy
Как использование языка C влияет на
Zabbix
Zabbix очень компактное приложение с
минимальными зависимостями
Архитектура: хорошие
стороны
Разделение логики: сбор данных, обнаружение
проблем, оповещение пользователей,
визуализация, API, и прочее
Мультипроцессорное приложение: использует все
доступные ядра CPU
Данные всегда в целостном состоянии
Оптимизации
Кеширование данных
Оптимизации
Массовые (bulk) операции
2015, что изменилось?
• Языки: без изменений - C, PHP, SQL
• Строгая процедура разработки
• Спецификация, разработка, code review,
тестирование, документация, готово!
• Coding guidelines
• Continuous integration
• Статические анализаторы и commit hooks
Сложности настоящего
времени
• Различные технологии на back-end и front-end



Команды с различными знаниями
• Скорость разработки
• Как добиться качества: тесты или лучшие
инструменты?
• Исторический код на PHP
Различное качество кода
C PHP
Настоящее
Zabbix 3.0
Где найти roadmap?
Ищем в поисковике “zabbix roadmap”
Попадаем на https://www.zabbix.org/wiki/Docs/roadmap
Zabbix 2.x: интерфейс
Убрали бессмысленные вещи
Zabbix 3.0: интерфейс
Zabbix 3.0: интерфейс
Zabbix 3.0: интерфейс
Интерфейс: незаметные
улучшения
• Модульность, MVC
• Возможность создавать свои страницы





• Возможность изменять существующие страницы
• Первые попытки инфраструктуры (API) для
создания своих блоков (widgets) дашборда
Шифрование и
аутентификация
• Шифрование и аутентификация для всех
компонент
• Поддержка TLS v1.2 и PSK
• На выбор: OpenSSL, GnuTLS и PolarSSL
Личные ресурсы
• Личные screens, maps и slide shows
• Возможность дать доступ другим пользователем
Версионность XML
• Версии для XML файлов
• Строгая валидация
• Обратная совместимость
• Автоматическая конвертация со старых версий
Контекстные макросы
{$MACRO:context], если не существует, то возьмём значение {$MACRO}
Пример
{$MINDISKSPACE:/tmp] => 50%

{$MINDISKSPACE:/db] => 30%

{$MINDISKSPACE} = 10%

Не хватает места на диске



{host:vfs.fs.size[{%FSNAME},pfree].last()} < {$MINDISKSPACE:{%FSNAME}}
Проверки вида “Ready for
business”
Проверки в конкретное время:
каждые N минут
каждые 2 часа начиная с 9:00 (9:00, 11:00 …)
каждый час в hh:00 и hh:30
по рабочим дням в 9:00
по рабочим дням каждый час в 9:00,10:00,...,18:00
каждый первый день месяца в 9:30
каждый первый день месяца в 9:30 если это понедельник
Ручной запуск хаускипера
Например, из crontab:
zabbix_server -R housekeeper_execute
Низкоуровневое
обнаружение для SQL
select field1,field2 from table where …

А дальше используем объекты для создания
элементов данных {%FIELD1}, {%FIELD2}

А также
• Фильтрация по типу памяти для proc.mem
• Поддержка IPv6 для Java gateway
• Triggers Top 100, фильтрация по: host, host group, severity and custom
time period
• Поддержка TCP для DNS проверок
• Обнаружение любого количества SNMP LLD значений



ifDescr, ifOutOctets, ifInOctets одним запросом из разных SNMP таблиц
• Dropdowns заменены на кнопки
• Поддержка LLD макросов в единицах измерения и IPMI сенсорах
Zabbix 3.0: когда?
• Планировался в Мае, 2015
• Ожидается: Август, 2015 (?)
Будущее
Что бы я хотел улучшить в Zabbix
WEB интерфейс: факты
• Не эффективная навигация: меню!
• Слишком много кликов для стандартных действий 



“Укликайся до смерти”, Lukas, Zabbix Conference
2014
• Информация разрознена



Мониторинг/Администрирование жёстко разделены
• Drop downs: поедают много памяти и CPU
WEB интерфейс: делаем удобным
• Улучшить удобство использования
• Объектно-ориентированная навигация 



Выбрали узел сети → Вся информация об узле
сети на расстоянии одного клика
• Повысить связанность информации
• Ускорить (также зависит от производительности
API)
API: факты
• Может быть ужасно медленным
• Генерирует слишком много SQL запросов
• Нет строгой валидации
• Слабые сообщения об ошибках
API: более быстрый и
надёжный
• Быстрее в 10-100x раз



Более эффективные алгоритмы

Bulk (массовые) операции и кеширование
• Сделать API гражданином “первого сорта”: возможно
передвинуть на сторону Zabbix Server 



Тут у нас самый эффективный код и технологии
• Добавить строгую валидацию
• Подробные сообщения об ошибках
Отчёты: факты
Так много полезной информации, но:
• Очень слабые отчёты
• Почти нет аналитики
• Нет возможности создавать свои отчёты
• Нет возможности запомнить параметры отчётов
Отчёты: визуализация
Реального времени и аналитика
Масштабируемость: факты
• Zabbix становится значительно медленнее при
росте объёма данных
• Требует специальных усилий для
масштабируемости (партиционирование)
• Непросто обеспечить HA/redundancy
Масштабируемость:
терабайты!
• Горизонтальная масштабируемость на уровне
хранилища 



Стандартные SQL хранилища этого не обеспечивают
• Отдельное хранилище для истории
• Новый распределённый мониторинг: один интерфейс
на все сервера
• Производительность интерфейса очень важна, ответ
менее чем за 1 секунду
API и плагины: факты
В настоящее время только для расширения
серверных и агентский проверок, внешних
скриптов.
API и плагины
Поддерживать везде где только возможно
• Новые триггерные функции
• Пре- и постобработка данных
• Виджеты для дашборда
• И прочее и прочее
Несколько
полезных ссылок
support.zabbix.com
Голосование - реальный способ повлиять на наши планы!
share.zabbix.com
• Поделись со всеми!
• Шаблонами
• Модулями
• Инструкциями (HOWTO)
Спасибо!
twitter.com/zabbix
Приезжайте на конференцию! Рига, 11-12 Сентября.

Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)

  • 1.
  • 2.
    О чем ябуду говорить? Немножко истории Настоящее: Zabbix 3.0 Будущее
  • 3.
    О команде Zabbix Нас30 человек Офисы в Риге, Токио и Нью-Йорке Зарабатываем предоставлением услуг вокруг Zabbix: поддержка, обучение, разработка, решения под ключ В Японии предлагаем интересные продукты:
  • 4.
    Что мы делаем? •Строим открытую систему мониторинга которой можно доверять • Не только для IT, но и IoT и другие применения • Помешаны на качестве и хорошем коде • Думаем о простоте поддержки
  • 5.
  • 6.
    История: 1998 • Изначальноиспользовался Perl, но не долго • Основные архитектурные решения Язык C для критичных частей Язык PHP для WEB интерфейса SQL back-end
  • 7.
    Язык C + Низкоуровневый,близок к железу + Эффективный код: быстрый + Минимальное использование ресурсов: CPU и память + Практически нет зависимостей + Один раз написал, запускай где хочешь - Медленная разработка - Проблемы с памятью, локами, поинтерами
  • 8.
    Язык PHP + Легкобыстро научиться писать плохой код + Доступен на всех платформах + Активно развивается в последнее время - Динамическая типизация - Для хорошего кода нужна дисциплина - Интерпретируем: ошибки во время выполнения
  • 9.
    SQL back-end + MySQL,PostgreSQL, Oracle, DB2, SQLite + Транзакционность и целостность данных + Стандартный API: SQL + Легко разворачивать - Масштабируемость - Высокая доступность и redundancy
  • 10.
    Как использование языкаC влияет на Zabbix Zabbix очень компактное приложение с минимальными зависимостями
  • 11.
    Архитектура: хорошие стороны Разделение логики:сбор данных, обнаружение проблем, оповещение пользователей, визуализация, API, и прочее Мультипроцессорное приложение: использует все доступные ядра CPU Данные всегда в целостном состоянии
  • 12.
  • 13.
  • 14.
    2015, что изменилось? •Языки: без изменений - C, PHP, SQL • Строгая процедура разработки • Спецификация, разработка, code review, тестирование, документация, готово! • Coding guidelines • Continuous integration • Статические анализаторы и commit hooks
  • 15.
    Сложности настоящего времени • Различныетехнологии на back-end и front-end
 
 Команды с различными знаниями • Скорость разработки • Как добиться качества: тесты или лучшие инструменты? • Исторический код на PHP
  • 16.
  • 17.
  • 18.
    Где найти roadmap? Ищемв поисковике “zabbix roadmap” Попадаем на https://www.zabbix.org/wiki/Docs/roadmap
  • 19.
    Zabbix 2.x: интерфейс Убралибессмысленные вещи
  • 20.
  • 21.
  • 22.
  • 23.
    Интерфейс: незаметные улучшения • Модульность,MVC • Возможность создавать свои страницы
 
 
 • Возможность изменять существующие страницы • Первые попытки инфраструктуры (API) для создания своих блоков (widgets) дашборда
  • 24.
    Шифрование и аутентификация • Шифрованиеи аутентификация для всех компонент • Поддержка TLS v1.2 и PSK • На выбор: OpenSSL, GnuTLS и PolarSSL
  • 25.
    Личные ресурсы • Личныеscreens, maps и slide shows • Возможность дать доступ другим пользователем
  • 26.
    Версионность XML • Версиидля XML файлов • Строгая валидация • Обратная совместимость • Автоматическая конвертация со старых версий
  • 27.
    Контекстные макросы {$MACRO:context], еслине существует, то возьмём значение {$MACRO} Пример {$MINDISKSPACE:/tmp] => 50%
 {$MINDISKSPACE:/db] => 30%
 {$MINDISKSPACE} = 10%
 Не хватает места на диске
 
 {host:vfs.fs.size[{%FSNAME},pfree].last()} < {$MINDISKSPACE:{%FSNAME}}
  • 28.
    Проверки вида “Readyfor business” Проверки в конкретное время: каждые N минут каждые 2 часа начиная с 9:00 (9:00, 11:00 …) каждый час в hh:00 и hh:30 по рабочим дням в 9:00 по рабочим дням каждый час в 9:00,10:00,...,18:00 каждый первый день месяца в 9:30 каждый первый день месяца в 9:30 если это понедельник
  • 29.
    Ручной запуск хаускипера Например,из crontab: zabbix_server -R housekeeper_execute
  • 30.
    Низкоуровневое обнаружение для SQL selectfield1,field2 from table where …
 А дальше используем объекты для создания элементов данных {%FIELD1}, {%FIELD2}

  • 31.
    А также • Фильтрацияпо типу памяти для proc.mem • Поддержка IPv6 для Java gateway • Triggers Top 100, фильтрация по: host, host group, severity and custom time period • Поддержка TCP для DNS проверок • Обнаружение любого количества SNMP LLD значений
 
 ifDescr, ifOutOctets, ifInOctets одним запросом из разных SNMP таблиц • Dropdowns заменены на кнопки • Поддержка LLD макросов в единицах измерения и IPMI сенсорах
  • 32.
    Zabbix 3.0: когда? •Планировался в Мае, 2015 • Ожидается: Август, 2015 (?)
  • 33.
    Будущее Что бы яхотел улучшить в Zabbix
  • 34.
    WEB интерфейс: факты •Не эффективная навигация: меню! • Слишком много кликов для стандартных действий 
 
 “Укликайся до смерти”, Lukas, Zabbix Conference 2014 • Информация разрознена
 
 Мониторинг/Администрирование жёстко разделены • Drop downs: поедают много памяти и CPU
  • 35.
    WEB интерфейс: делаемудобным • Улучшить удобство использования • Объектно-ориентированная навигация 
 
 Выбрали узел сети → Вся информация об узле сети на расстоянии одного клика • Повысить связанность информации • Ускорить (также зависит от производительности API)
  • 36.
    API: факты • Можетбыть ужасно медленным • Генерирует слишком много SQL запросов • Нет строгой валидации • Слабые сообщения об ошибках
  • 37.
    API: более быстрыйи надёжный • Быстрее в 10-100x раз
 
 Более эффективные алгоритмы
 Bulk (массовые) операции и кеширование • Сделать API гражданином “первого сорта”: возможно передвинуть на сторону Zabbix Server 
 
 Тут у нас самый эффективный код и технологии • Добавить строгую валидацию • Подробные сообщения об ошибках
  • 38.
    Отчёты: факты Так многополезной информации, но: • Очень слабые отчёты • Почти нет аналитики • Нет возможности создавать свои отчёты • Нет возможности запомнить параметры отчётов
  • 39.
  • 40.
    Масштабируемость: факты • Zabbixстановится значительно медленнее при росте объёма данных • Требует специальных усилий для масштабируемости (партиционирование) • Непросто обеспечить HA/redundancy
  • 41.
    Масштабируемость: терабайты! • Горизонтальная масштабируемостьна уровне хранилища 
 
 Стандартные SQL хранилища этого не обеспечивают • Отдельное хранилище для истории • Новый распределённый мониторинг: один интерфейс на все сервера • Производительность интерфейса очень важна, ответ менее чем за 1 секунду
  • 42.
    API и плагины:факты В настоящее время только для расширения серверных и агентский проверок, внешних скриптов.
  • 43.
    API и плагины Поддерживатьвезде где только возможно • Новые триггерные функции • Пре- и постобработка данных • Виджеты для дашборда • И прочее и прочее
  • 44.
  • 45.
    support.zabbix.com Голосование - реальныйспособ повлиять на наши планы!
  • 46.
    share.zabbix.com • Поделись совсеми! • Шаблонами • Модулями • Инструкциями (HOWTO)
  • 47.