2. О чем я буду говорить?
Немножко истории
Настоящее: Zabbix 3.0
Будущее
3. О команде Zabbix
Нас 30 человек
Офисы в Риге, Токио и Нью-Йорке
Зарабатываем предоставлением услуг вокруг Zabbix:
поддержка, обучение, разработка, решения под ключ
В Японии предлагаем интересные продукты:
4. Что мы делаем?
• Строим открытую систему мониторинга которой
можно доверять
• Не только для IT, но и IoT и другие применения
• Помешаны на качестве и хорошем коде
• Думаем о простоте поддержки
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
Данные всегда в целостном состоянии
14. 2015, что изменилось?
• Языки: без изменений - C, PHP, SQL
• Строгая процедура разработки
• Спецификация, разработка, code review,
тестирование, документация, готово!
• Coding guidelines
• Continuous integration
• Статические анализаторы и commit hooks
15. Сложности настоящего
времени
• Различные технологии на back-end и front-end
Команды с различными знаниями
• Скорость разработки
• Как добиться качества: тесты или лучшие
инструменты?
• Исторический код на PHP
23. Интерфейс: незаметные
улучшения
• Модульность, MVC
• Возможность создавать свои страницы
• Возможность изменять существующие страницы
• Первые попытки инфраструктуры (API) для
создания своих блоков (widgets) дашборда
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. Проверки вида “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 если это понедельник
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 сенсорах
34. WEB интерфейс: факты
• Не эффективная навигация: меню!
• Слишком много кликов для стандартных действий
“Укликайся до смерти”, Lukas, Zabbix Conference
2014
• Информация разрознена
Мониторинг/Администрирование жёстко разделены
• Drop downs: поедают много памяти и CPU
35. WEB интерфейс: делаем удобным
• Улучшить удобство использования
• Объектно-ориентированная навигация
Выбрали узел сети → Вся информация об узле
сети на расстоянии одного клика
• Повысить связанность информации
• Ускорить (также зависит от производительности
API)
36. API: факты
• Может быть ужасно медленным
• Генерирует слишком много SQL запросов
• Нет строгой валидации
• Слабые сообщения об ошибках
37. API: более быстрый и
надёжный
• Быстрее в 10-100x раз
Более эффективные алгоритмы
Bulk (массовые) операции и кеширование
• Сделать API гражданином “первого сорта”: возможно
передвинуть на сторону Zabbix Server
Тут у нас самый эффективный код и технологии
• Добавить строгую валидацию
• Подробные сообщения об ошибках
38. Отчёты: факты
Так много полезной информации, но:
• Очень слабые отчёты
• Почти нет аналитики
• Нет возможности создавать свои отчёты
• Нет возможности запомнить параметры отчётов
40. Масштабируемость: факты
• Zabbix становится значительно медленнее при
росте объёма данных
• Требует специальных усилий для
масштабируемости (партиционирование)
• Непросто обеспечить HA/redundancy
41. Масштабируемость:
терабайты!
• Горизонтальная масштабируемость на уровне
хранилища
Стандартные SQL хранилища этого не обеспечивают
• Отдельное хранилище для истории
• Новый распределённый мониторинг: один интерфейс
на все сервера
• Производительность интерфейса очень важна, ответ
менее чем за 1 секунду
42. API и плагины: факты
В настоящее время только для расширения
серверных и агентский проверок, внешних
скриптов.
43. API и плагины
Поддерживать везде где только возможно
• Новые триггерные функции
• Пре- и постобработка данных
• Виджеты для дашборда
• И прочее и прочее