Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)

Preview:

Citation preview

или о чем не пишут в мануале.

Илья Аблеев)

в.

Инфраструктура: ~3K Linux хостов; ~3 датацентра: Европа, Америка, Азия; 2 девел-площадки: Москва, Лондон)

Отдел мониторинга: реакция на проблемы введение нового и поддержание старого добра; автоматизация.)

Badoo.

1.  Zabbix для триггеров – Zabbix1 2. Zabbix для статистики – Zabbix2 Разделены на два, по “типам” стораджей. 3. Zabbix proxy для девела – разгрузить основной сервер 4. Zabbix External – для доступности наших сервисов снаружи)

Чем мониторим?.

Zabbix Servers.

New values/sec:

Hosts:

Items:

Triggers:)

Zabbix2:

~ 4.5 K

~ 3 K

~ 440 K

0.

Zabbix1:

~ 2 K

~ 4 K

~ 370 K

~ 590 K)

Zabbix1.

История – 1 день

Тренды – 0 дней

Частые проверки – от 30 до 300 секунд

Housekeeper включён.

Мастер-мастер база на горячую замену

Бэкапим только конфигурацию, без истории)

Zabbix2.

История – 1 день

Тренды – 365 дней

Редкие проверки – в среднем 300-600 секунд

Housekeeper включён.

Бэкапим всё: конфигурацию и историю.

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)

Zabbix2

Zabbix2

MySQL Performance monitor.

http://www.fromdual.com/mysql-performance-monitor

готовое решение

шлёт данные пачкой, используя Zabbix Sender

хранит данные локально при недоступности Zabbix Server)

Zabbix2

Zabbix2

Формат DNS записей переносим в Zabbix. Группа: “CLUSTER (dc)”, например “WWW (mlan)” Шаблон отвечает за роль или сервис: TLinux_WWW TService_Nginx, TService_Postfix_mlan, TService_Postfix_ulan)

Как не сойти с ума?.

~ $ 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!

Как не сойти с ума?.

Проблема: нужно добавлять новые хосты в Zabbix. Руками? Долго. Готовое решение: “Discovery Rules”. Подходит, если кроме реальных хостов добавлять ничего не нужно.)

Zabbix Discovery Rules.

Zabbix Discovery

Что нужно нам:

– консистентность двух Zabbix Server’ов

– динамическое раскидывание по группам/шаблонам

– исключения / включения

– удаление лишнего)

Badoo Discovery.

dig axfr @dns1 mlan | grep -Ew 'IN.*A'!

!

wwwbma95.mlan.!

wwwbma96.mlan.!

+ wwwbma97.mlan.!

+ wwwbma98.mlan.!

GROUP: “%cluster% (%platform%)” –> “WWWBMA (mlan)” TEMPLATE: “TLinux_%cluster%” –> “TLinux_WWWBMA”)

Badoo Discovery

dig axfr @dns1 mlan | grep -E ‘tarantool.*IN.*CNAME'!

!

tarantool-20.mlan.!

tarantool-21.mlan.!

+ tarantool-22.mlan.!

+ tarantool-23.mlan.!

+ tarantool-24.mlan.!

GROUP: “%cluster% (%platform%)” –> “TARANTOOL (mlan)” TEMPLATE: “TService_%cluster%” –> “TService_TARANTOOL”)

Badoo Discovery.

Несколько дата-центров.

Как не сойти с ума?)

Тысячи хостов.

www1.msk www1.lnd www2.lnd www2.msk

Zabbix2 Zabbix1

www1.prod www2.prod

Zabbix Proxy.

Поллеры Zabbix Server’а висят, ожидая сети. Proxy помогает разгрузить Server.)

www1.prod

www1.msk www1.lnd

www2.prod

www2.lnd www2.msk

Zabbix.MSK Zabbix.LND

Zabbix2 Zabbix1

Zabbix Proxy.

Лёгкий Zabbix Server. Backend – SQLite, не ресурсоёмко. Переносим хосты на Proxy автоматом по названию ДЦ. Возникают сложности с Zabbix Sender для Zabbix Proxy.)

Zabbix Proxy Map.

Доступна локально на каждом сервере

{ !

"www1.d3": "zbx.msk", !

"www1.d4": "zbx.lnd",!

…!

"db1.d3": “zbx.msk"!

}!

Используется Zabbix Sender’ом, отправляя данные куда нужно.)

А как не уронить Zabbix Server?.

При отправке данных по крону есть шанс положить базу Zabbix в один момент. Что делать? sleep перед отправкой! На сколько слипаться? random() – плохо, нужно присылать данные через равные временные промежутки. Высчитываем время из названия хоста.)

Три способа запуска самописных скриптов:

•  external scripts

•  user parameters

•  system.run[ ])

Run, Zabbix, Run.

zabbix_server.conf ExternalScripts=/local/zabbix/scripts

$ ls -l /local/zabbix/scripts/!

drwxr-xr-x 3 zabbix users 4096 Jun 5 13:51 mysql_query.sh!

External Scripts.

Плюсы: скрипты хранятся на Zabbix Server’е или Proxy проверки выполняются непосредственно с Zabbix Server’a мониторится доступность “снаружи” Минусы: много серверов –> Zabbix Server загнётся нельзя получить доступ к локальным данным)

External Scripts.

zabbix_agentd.conf UserParameter=routes,/local/zabbix/scripts/helpers/routes.sh!

UserParameter=raid[*],/local/zabbix/scripts/helpers/raid.sh $1!

User Parameters.

Плюсы: проверки выполняются на агентах можно получить доступ к локальным данным Минусы: постоянно нужно добавлять новые строчки в конфиги обязателен рестарт агента нужно рассказывать коллегам, как запустить проверку нужно самим вспоминать, как она выполняется)

User Parameters.

External Scripts UserParameter system.run[ ] Привет безопасникам!)

Run, Zabbix, Run.

$ sudo -u zabbix /local/zabbix/scripts/helpers/dbstatus.sh Zabbix_Flush_Data_history

53

$ /local/zabbix/scripts/helpers/dbstatus.sh Zabbix_Flush_Data_history

53

++ QUERY:

SELECT UNIX_TIMESTAMP(NOW())-hi.clock FROM zabbix.history hi …

system.run[ ].

Сплошные профиты: 👍 не нужно каждый раз обновлять конфиги везде 👍 сразу видно, как вызывается 👍 можно показать проверку админу/девелоперу 👎 открытый shell на проверяющем хосте

system.run[ ].

Deploy.

Проблема: нужно доставить скрипты и конфиги на 3 тысячи клиентов Решение: 1. пушим в Git 2. автоматом собираем архив 3. скачиваем с каждого клиента.)

Deploy.

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

————————

Итоги.

Итоги.

✔  Можно разделить Zabbix’ы по функциональному

признаку

✔  Discovery – если у вас часто добавляются серверы.

Желательно заранее подумать об удобном именовании

серверов и сервисов.

✔  Proxy спасает жизнь при плохом канале

✔  Деплой zabbix agentd и скриптов – как минимальная

составляющая ваших серверов.)

Вопросы?.

http://habrahabr.ru/company/Badoo/

Илья Аблеев)@ableev

ableev@corp.badoo.com)

Recommended