2. …Так кто ж ты, MonOps?
— Я - часть той силы, что вечно
хочет зла и вечно совершает
благо.
3.
4. • Все само себя
не замониторит
• Кнопка «сделай мне зашибись» не
случится
• Monitoring Operations (MonOps) -
это РАЗРАБОТКА решения
мониторинга
под конкретный проект
• Мониторинг - это дорого!
• Постоянный процесс разработки
СПАСИБО, КЭП!
5. • услуги IT-аутсорсинга
• эксплуатация государственных информационных
систем федерального значения
• облачные услуги OnCloud.ru
• в компании нет разработчиков, только системные
администраторы
КОМПАНИЯ ОНЛАНТА
6. ZABBIX В ОНЛАНТА
• гос проект с посещаемостью 350 000 в сутки
• OnCloud - облачный хостинг, 600 ВМ enterprise level
12. • Эксперты определяют граничные условия, интервал, и необходимость в оповещении
• Zabbix — это всегда +сотрудник ДС, никаких СМС, приятно услышать человека
который знает, что точно случилось в 4 утра :)
• Делайте удобно для ДС: четкая инструкция в описание триггера, что делать.
Если можно починить пусть чинят (если это обходное решение), если нет то пусть
звонят эксперту
• Ссылку на базу знаний
• Меньше графиков, больше толковых триггеров.
Визуальный мониторинг - быстрый путь к НШС, считайте, что у вас нет мониторинга
• Используйте LLD везде - это унификация и если вы играете в квест с
разработчиками
18. php-fpm:
pm = static
pm.max_children = 450
nginx + php-fpm + opcache
// permission check
if ($userType != USER_TYPE_SUPER_ADMIN && !$options['nopermissions']) {
$permission = $options['editable'] ? PERM_READ_WRITE : PERM_READ;
$userGroups = getUserGroupsByUserId($userid);
// check permissions by graph items
/* PATCH: TOO LONG GRAPHS QUERIES
$sqlParts['where'][] = 'NOT EXISTS ('.
'SELECT NULL'.
' FROM graphs_items gi,items i,hosts_groups hgg'.
' LEFT JOIN rights r'.
' ON r.id=hgg.groupid'.
' AND '.dbConditionInt('r.groupid', $userGroups).
' WHERE g.graphid=gi.graphid'.
' AND gi.itemid=i.itemid'.
' AND i.hostid=hgg.hostid'.
' GROUP BY i.hostid'.
' HAVING MAX(permission)<'.zbx_dbstr($permission).
' OR MIN(permission) IS NULL'.
' OR MIN(permission)='.PERM_DENY.
')';
/include/classes/api/services/CGraph.php
php:
memory_limit = 512M
opcache.enable =1
ZABBIX FRONTEND
19. • Все в CSV
• схема с процедурами партиционирования:
$MYSQLDUMP --no-data --events --routines
• все таблицы кроме исторических:
$MYSQLDUMP --opt --compact --no-create-info
--tab=${DB_TABLE_DIR} $db $tb
• history и trends по партициям:
SELECT * FROM $tb PARTITION (${PART}) INTO OUTFILE '$FILE'
DB BACKUP
20. 1. backup только конфигурации, без истории и трендов
2. создаем базу zabbix_lite из бэкапа на шаге1
3. перенастриваем zabbix_server на zabbix_lite
4. поднимаем zabbix_server новой версии наVM, настраиваем на обновляемую базу
5. проходим по логам процедуру обновления БД, в основном это ALTERTABLE …
ENGINE=«TokuDB»
+смотрим, что он там делает
src/libs/zbxdbupgrade/dbupgrade.c
6. обновляем основной zabbix_server
7. стартуем на обнолвенной базе
ПРОЦЕСС ОБНОВЛЕНИЯ ZABBIX SERVER
21. 1. пользовательские сценарии по сайту + личный кабинет через wget_gost
2. AIX, Linux,Windows
3. много WebSphere + Zorka.io (heap, GC)
4. Oracle: tablespaces, jobs, replication, бизнес метрики приложения (все на LLD)
5. работу сервисов: nginx, apache, mongodb, tomcat, …
6. cpu, ram, swap, iostat
7. сертификаты
8. не любим crontab и UserParameter — любим system.run[]
ЧТО МОНИТОРИМ
22. CASE: ОТЧЕТ О ДОСТУПНОСТИ ВИРТУАЛИЗАЦИИ
…
LUN 1 LUN 2 LUN 3
LUN 1 LUN 2 LUN 3
Задача: сформировать отчет для каждой ВМ заказчика по интегральной метрике
доступности гипервизора, СХД и сети.
boarder router
23. FAST: pyVmomi — Python SDK for theVMware vSphere API
SLOW: VMware Perl SDK
НОВОЕ LLD ДЛЯ ОБНАРУЖЕНИЯVM
30. CASE: ODBC LLD
Задача: создать шаблон автоматического обнаружения метрик приложений
на WebSphere application server
• имеем в наличии 120 серверов приложений
• сервера пишут статистику в Oracle
• получаем значения метрик через db.odbc.select[]
• функционал опроса БД вынесен на Zabbix Proxy
35. СЛАБЫЕ МЕСТА ODBC
• Нет отдельного процесса под проверки — иногда коннект к базе может быть
долгий, отнимается целый poller
• Одна проверка — одно новое соединение
NO connection pooling — не кэшируют соединения, Ваши DBA будут
счастливы
• Нельзя сделать такое:
SELECT
PERCENTILE_CONT(0.1) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_10,
PERCENTILE_CONT(0.2) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_20,
PERCENTILE_CONT(0.3) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_30,
PERCENTILE_CONT(0.4) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_40,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_50,
PERCENTILE_CONT(0.6) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_60,
PERCENTILE_CONT(0.7) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_70,
PERCENTILE_CONT(0.8) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_80,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY one_query_time_ms ) as p_90
36. ССЫЛКИ
• Лучший доклад про мониторинг на RootConf 2015
Monitoring-driven эксплуатация. Николай Сивко hh.ru
http://goo.gl/HDI86X
• Мониторинг базы данных Oracle через ODBC в Zabbix
http://habrahabr.ru/post/226365/
• pyVmomi is the Python SDK for theVMware vSphere API
https://github.com/vmware/pyvmomi