Доклад с Zabbix Meetup.
Рассказали про:
• Сколько инстансов используем, зачем, какая конфигурация и нагрузка, какие дополнительные тулзы используем.
• Деплой скриптов/конфигов/обновлении.
• Флоу появления новых сущностей в мониторинге: хостов, проверок, графиков в заббикс. Самописный дискавери (серверов, сервисов): почему свой и что он умеет.
• Штуки для удобства: нотификации на рабочий стол, быстрая навигация по графикам.
2. Инфраструктура:
~3K Linux хостов;
~3 датацентра: Европа, Америка, Азия;
2 девел-площадки: Москва, Лондон)
Отдел мониторинга:
реакция на проблемы
введение нового и поддержание старого добра;
автоматизация.)
Badoo.
3.
4. 1. Zabbix для триггеров – Zabbix1
2. Zabbix для статистики – Zabbix2
Разделены на два, по “типам” стораджей.
3. Zabbix proxy для девела – разгрузить основной сервер
4. Zabbix External – для доступности наших сервисов
снаружи)
Чем мониторим?.
6. Zabbix1.
История – 1 день
Тренды – 0 дней
Частые проверки – от 30 до 300 секунд
Housekeeper включён.
Мастер-мастер база на горячую замену
Бэкапим только конфигурацию, без истории)
7. Zabbix2.
История – 1 день
Тренды – 365 дней
Редкие проверки – в среднем 300-600 секунд
Housekeeper включён.
Бэкапим всё: конфигурацию и историю.
8. Zabbix2.
Массовые шаблоны/скрины: Hardware, MySQL, Nginx, PHP-FPM.
Гостевой доступ для всех сотрудников.
“Удобная” навигация:
http://zabbix2/%hostname%&%screen%
)контроллер ловит все запросы
http://zabbix2/www1.mlan&nginx
www1.mlan => { hostid: 11931, groupid: 35 }
nginx => { elementid: 55 }
http://zabbix2/screens.php?hostid=11931&groupid=35&elementid=55)
14. Формат DNS записей переносим в Zabbix.
Группа:
“CLUSTER (dc)”, например “WWW (mlan)”
Шаблон отвечает за роль или сервис:
TLinux_WWW
TService_Nginx,
TService_Postfix_mlan, TService_Postfix_ulan)
Как не сойти с ума?.
15. ~ $ dig +short cppbig46.mlan!
10.10.147.47!
!
~ $ dig +short TXT cppbig46.mlan!
"contact2" pinbaqueue" “pinbaqueue1"!
!
~ $ dig +short pinbaqueue.mlan!
cppbig46.mlan.!
10.10.147.47!
Как не сойти с ума?.
16. Проблема: нужно добавлять новые хосты в Zabbix.
Руками? Долго.
Готовое решение: “Discovery Rules”.
Подходит, если кроме реальных хостов добавлять ничего не
нужно.)
Zabbix Discovery Rules.
25. Zabbix Proxy.
Лёгкий Zabbix Server.
Backend – SQLite, не ресурсоёмко.
Переносим хосты на Proxy автоматом по названию ДЦ.
Возникают сложности с Zabbix Sender для Zabbix
Proxy.)
26. Zabbix Proxy Map.
Доступна локально на каждом сервере
{ !
"www1.d3": "zbx.msk", !
"www1.d4": "zbx.lnd",!
…!
"db1.d3": “zbx.msk"!
}!
Используется Zabbix Sender’ом, отправляя данные куда
нужно.)
27. А как не уронить Zabbix Server?.
При отправке данных по крону есть шанс положить базу
Zabbix в один момент.
Что делать? sleep перед отправкой!
На сколько слипаться?
random() – плохо, нужно присылать данные через равные
временные промежутки.
Высчитываем время из названия хоста.)
28. Три способа запуска самописных скриптов:
• external scripts
• user parameters
• system.run[ ])
Run, Zabbix, Run.
30. Плюсы:
скрипты хранятся на Zabbix Server’е или Proxy
проверки выполняются непосредственно с Zabbix Server’a
мониторится доступность “снаружи”
Минусы:
много серверов –> Zabbix Server загнётся
нельзя получить доступ к локальным данным)
External Scripts.
32. Плюсы:
проверки выполняются на агентах
можно получить доступ к локальным данным
Минусы:
постоянно нужно добавлять новые строчки в конфиги
обязателен рестарт агента
нужно рассказывать коллегам, как запустить проверку
нужно самим вспоминать, как она выполняется)
User Parameters.
35. Сплошные профиты:
👍 не нужно каждый раз обновлять конфиги везде
👍 сразу видно, как вызывается
👍 можно показать проверку админу/девелоперу
👎 открытый shell на проверяющем хосте
system.run[ ].
37. Проблема:
нужно доставить скрипты и конфиги на 3 тысячи клиентов
Решение:
1. пушим в Git
2. автоматом собираем архив
3. скачиваем с каждого клиента.)
Deploy.
38. if (($version_scripts < $version_scripts_remote))
then
update_scripts
fi
if (($version_config < $version_config_remote))
then
update_config &&
sudo /etc/init.d/zabbix_agentd restart
fi
Deploy.
*/5 * * * * root /local/zabbix/autoupdate.zabbix.sh
————————
40. Итоги.
✔ Можно разделить Zabbix’ы по функциональному
признаку
✔ Discovery – если у вас часто добавляются серверы.
Желательно заранее подумать об удобном именовании
серверов и сервисов.
✔ Proxy спасает жизнь при плохом канале
✔ Деплой zabbix agentd и скриптов – как минимальная