41
или о чем не пишут в мануале Илья Аблеев в

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

Embed Size (px)

Citation preview

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

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

Илья Аблеев)

в.

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

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

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

Badoo.

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

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

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

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

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)

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

Zabbix1.

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

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

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

Housekeeper включён.

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

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

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

Zabbix2.

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

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

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

Housekeeper включён.

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

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

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)

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

Zabbix2

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

Zabbix2

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

MySQL Performance monitor.

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

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

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

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

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

Zabbix2

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

Zabbix2

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

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

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

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

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

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

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

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

Zabbix Discovery Rules.

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

Zabbix Discovery

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

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

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

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

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

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

Badoo Discovery.

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

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

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

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.

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

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

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

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

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

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

Zabbix2 Zabbix1

www1.prod www2.prod

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

Zabbix Proxy.

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

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

www1.prod

www1.msk www1.lnd

www2.prod

www2.lnd www2.msk

Zabbix.MSK Zabbix.LND

Zabbix2 Zabbix1

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

Zabbix Proxy.

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

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

Zabbix Proxy Map.

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

{ !

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

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

…!

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

}!

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

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

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

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

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

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

•  external scripts

•  user parameters

•  system.run[ ])

Run, Zabbix, Run.

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

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.

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

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

External Scripts.

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

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

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

User Parameters.

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

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

User Parameters.

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

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

Run, Zabbix, Run.

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

$ 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[ ].

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

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

system.run[ ].

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

Deploy.

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

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

Deploy.

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

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

————————

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

Итоги.

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

Итоги.

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

признаку

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

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

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

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

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

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

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

Вопросы?.

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

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

[email protected])