31
От Low Level к Super Discovery Илья Аблеев в или как переложить мониторинг на девелопера

Zabbix в badoo, от lld к super discovery

Embed Size (px)

Citation preview

Page 1: Zabbix в badoo, от lld к super discovery

От Low Level к Super Discovery

Илья Аблеев

в

или как переложить мониторинг на девелопера

Page 2: Zabbix в badoo, от lld к super discovery

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

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

Badoo

Page 3: Zabbix в badoo, от lld к super discovery
Page 4: Zabbix в badoo, от lld к super discovery

Всё

!

– доступность серверов / сетевых железок

!

– “хардварную” статистику: память, CPU, load average, RAID

!

– сервисы: MySQL, Nginx, PHP-FPM, самописные

!

– статистику сервисов: количество запросов / время ответа

Что мониторим Zabbix’ом?

Page 5: Zabbix в badoo, от lld к super discovery

А ещё…

!

– логику приложений: очереди, актуальность / консистентность данных

!

– бизнес-метрики (активность пользователей): онлайн, регистрации, загрузка фото

Что мониторим Zabbix’ом?

Page 6: Zabbix в badoo, от lld к super discovery

!

Когда:

• подумали заранее, при создании сервиса

• что-то сломалось, нужно предотвратить повторение

!

Как:

• оформляем задачу, описываем требования

• реализовываем логику (скрипты)

• прикручиваем триггеры, уведомления

!

!

Как решаем, что нужно мониторить?

Page 7: Zabbix в badoo, от lld к super discovery

!

!

Но долго, если у нас очень много мелких задач.

!

!

Больше задач –> больше времени тратится на повторение уже существующих приёмов.

Замониторить – просто

Page 8: Zabbix в badoo, от lld к super discovery

Коллеги, нам бы мониторить количество записей в таблице и если превысит 100 – слать sms’ку. Можете? !mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb1.MyTable1”

!

Вроде просто.

!

Добавили в zabbix, подписали на SMS.

Пример

Page 9: Zabbix в badoo, от lld к super discovery

Коллеги, слушайте, тут аналогичная база есть. Можете добавить? !mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable1”

!

Опять просто.

!

Добавили в zabbix, подписали на SMS.

Пример

Page 10: Zabbix в badoo, от lld к super discovery

Мы тут подумали… У нас есть десяток таких таблиц. Сможете? И по каждой нужно выставить свой лимит… !mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb1.MyTable1” mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable1” mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable2” mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable3” mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable4”

… mysql -uzabbix -SNe “SELECT COUNT(*) FROM MyDb2.MyTable10”

Пример

Page 11: Zabbix в badoo, от lld к super discovery

А у нас тут база переехала…

А давайте нечётные не проверять!

А можете новый номер для SMS добавить?

Давайте на пятую таблицу недельку

позабиваем?

А таблицы из первой базы вообще не используются уже давно, чо вы их до сих пор

мониторите-то???

Page 12: Zabbix в badoo, от lld к super discovery

ЧО ТАК ДОЛГО-ТО?

ДЕВЕЛОПЕР(ы)

ХОЧУ БОЛЬШЕ!

ОТПИШИТЕ МЕНЯ ОТ СМС…

Page 13: Zabbix в badoo, от lld к super discovery

МОНИТОРИНГ

mysql> DROP DATABASE zabbix;

Page 14: Zabbix в badoo, от lld к super discovery

Шаблоны • массово раскатываем на кучу хостов • меняем всё и сразу

• нет возможности менять триггеры для одного хоста !

API • сложно ввести в курс дела тех, кто не видел заббикс

Нужно делать быстрее и больше

Page 15: Zabbix в badoo, от lld к super discovery

Низкоуровневое обнаружение !

Не слышали? Быстро изучать: https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery

В двух словах: что-то среднее между API и шаблонами. !

Новые объекты доставляются в JSON массиве.

Low Level Discovery

Page 16: Zabbix в badoo, от lld к super discovery

Low Level Discovery

Page 17: Zabbix в badoo, от lld к super discovery

Low Level Discovery

Page 18: Zabbix в badoo, от lld к super discovery

Просто обнаружить и повесить лампочки – скучно. !

Макросы можно подставлять в разные объекты: айтемы: {названия, ключи}, триггеры: {текст, формула, лимит} !

Нельзя подставить макрос в функцию 😟

https://support.zabbix.com/browse/ZBXNEXT-1667 (ровно через два дня – тикету исполнится три!!! года)

Low Level Discovery

Page 19: Zabbix в badoo, от lld к super discovery

Привет, Zabbix 3.0 https://www.zabbix.com/documentation/3.0/manual/config/macros/usermacros !

Общий смысл: позволит использовать разные значения для разных LLD макросов, которые были обнаружены. !

Если не найдёт – будет использовать дефолтное. !

* Контекстные макросы

Page 20: Zabbix в badoo, от lld к super discovery

!

Даже с контекстными макросами приходится совершать два действия: – дискаверить новые метрики – задавать лимиты (через API или руками) !

Оставили в старом варианте: значение задаётся прямо во время дискавери, в одном действии.

А как у нас?

Page 21: Zabbix в badoo, от lld к super discovery

Расширяем JSON массивдефолтные лимиты

кастомные лимиты

Page 22: Zabbix в badoo, от lld к super discovery

Создаём ОДИН раз айтемы:

И триггеры:

Page 23: Zabbix в badoo, от lld к super discovery

Лёгким движением руки…

Page 24: Zabbix в badoo, от lld к super discovery

У разработчиков – много однотипных сервисов. У этих однотипных сервисов – ещё больше айтемов. !

Чем отличаются: – названием – критичностью – ответственными !

Всё это “укладывается” в LLD.

Дискаверим на более “высоком” уровне

Page 25: Zabbix в badoo, от lld к super discovery

Дискаверим сервисы. Как? Доклад прошлого года :) https://youtu.be/ZfZL39By0cw?t=10m15s !

В заббиксе нет понятия “сервис”, поэтому для удобства каждый сервис добавляем как хост. !

Список сервисов предоставляет девелопер. !

Например: online_users, registration, push_send, push_click, email_send, email_open, …

Шаг первый

Page 26: Zabbix в badoo, от lld к super discovery

Создаём “универсальный” шаблон дискавери. !

Универсальный – значит применим для всех сервисов. !

Все айтемы с типом “траппер”: !

status[{#ID}] состояние метрики count[{#ID}] текущее значение limit_disaster[{#ID}] порог для самого критичного limit_high[{#ID}] для менее критичного limit_high[{#ID}] для наименее критичного

Шаг второй

Page 27: Zabbix в badoo, от lld к super discovery

Макросы: !

{#ID} уникальный id метрики {#TRIGGER} название триггера {#EMAIL} список адресов для уведомлений {#SMS} список телефонов !

Название для триггера – чтобы назвали так, как будет удобно.

Шаг второй

Page 28: Zabbix в badoo, от lld к super discovery

Шаг второй

Page 29: Zabbix в badoo, от lld к super discovery

Все айтемы – трапперы. !

Девелоперы сами будут отправлять нам данные через zabbix_sender: из крона, из “облаков”, и тд. !

Логику, когда нужно зажечь триггер – пишут они же. !

Список адресов и телефонов – заботятся снова они, заранее. !

Заббикс зажигает лампочки и отправляет уведомления.

Шаг третий

Page 30: Zabbix в badoo, от lld к super discovery

А у нас тут база переехала…

А давайте нечётные не проверять!

А можете новый номер для SMS добавить?

Давайте на пятую таблицу недельку

позабиваем?

А таблицы из первой базы вообще не используются уже давно, чо вы их до сих пор

мониторите-то???

Сейчас сам всё поправлю

Итоги

Page 31: Zabbix в badoo, от lld к super discovery

Вопросы?

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

!

Илья Аблеев [email protected]