Upload
tanya-denisyuk
View
6.999
Download
2
Embed Size (px)
Citation preview
Сбор debug-логов в «облаке»Юрий Насретдинов, Badoo
О компании
250M пользователей
200K регистраций в сутки
3K серверов70K RPS на PHP-FPM
5M загрузок фото в день
1 Тб логов за сутки
Схема доклада
• «Облако» в Badoo
• Старый сборщик логов (PHP, регулярный опрос файлов)
• Новый сборщик логов (go, inotify)
• Open-source, выводы
«Облако» для разработчика
class
process #1
process #2 process #3
process #4process #5
Архитектура «облака»
MySQL
cloudsys1
cloud1 cloud2 cloud3 cloudN
cloudsys2
proxy proxy proxy proxy
Пример скрипта
Пример скрипта: вывод на экран
[2015-10-12 09:53:57] INFO run started from /home/nasretdinov/badoo/ [2015-10-12 09:53:57] INFO Hello, world! [2015-10-12 09:53:57] INFO run script has finished successfully (0.006 sec, 0.076 user, 0.012 sys, 0.034 loading)
Формат строки в лог-файле
[cloudstaging1, 74024107029]: [2015-10-12 09:58:43] INFO Hello, world!
[hostname, run_id]: [YYYY-MM-DD HH:II:SS] LOG_LEVEL Message
Сбор логовprocess1
logs
process2
process3
process4
process5
process6
process7
process8
process9
Сбор логов
• Приложения могут писать отладочную информацию — «логи»
• Логи пишутся на каждой машине «облака», оттуда их нужно уметь собирать
• Писать нужно много, чтобы можно было понять причины проблем
Требования к системе
• Низкая latency (секунды) • Высокая пропускная способность (десятки Мб/сек)
• Возможность поиска («greppable»)
Старый сборщик логов: перенаправление вывода
• stdout | proxy >> run_id.out.log
• stderr | proxy >> run_id.err.log
proxy
process #1 process #2 process #3
process #1
STDIN
STDOUT
STDERR
1.out.log
/dev/null
1.err.logproxy
Старый сборщик логов: перенаправление вывода
• имя файла: run_id.out.log[.offset] • на каждый запуск создается 2 файла + в имени файла хранится последнее отправленное смещение
• опрашивается список файлов и всё посылается в категорию «logs» в scribe
Старый сборщик логов: достоинства
• Очень простая реализация • Вполне надежная • Позволяет легко отличать разные запуски друг от друга — идентификатор запуска находится в имени файла
Старый сборщик логов: недостатки
• Низкая скорость на приемнике (3 Мб/сек) • Может накопиться очень много файлов
(миллион) • Высокий CPU usage — опрос файлов ресурсоемок
• Использование inotify делает только хуже
Старый сборщик логов: недостатки
• Неудобный перезапуск прокси • Один «флудящий» класс вызывает «затор» всей системы и задерживается доставка всех логов
Новый сборщик логов: требования
• Управляемость (не создается миллион файлов)
• Желательна real-time доставка • Большой запас по пропускной способности
Новый сборщик логов: перенаправление вывода
• stdout >> class.out.log
• stderr >> class.err.log
proxy
process #1 process #2 process #3
process #1
STDIN
STDOUT
STDERR
test_class.out.log
/dev/null
test_class.err.log
Новый сборщик логов: архитектура
processor
collector
collector
collector
collector
class1.out.log
class2.err.log
someclass.out.log
Новый сборщик логов: троттлинг доставки
"Good" scripts’ logs
"Bad" scripts’ logs"Bad" scripts’ logs chunk
data stream
Новый сборщик логов: достоинства
• Высокая скорость доставки (100+ Мб/сек) • «Вытесняющая многозадачность» • Отказоустойчивость (запись в файлы) • Управляемость и гибкость — возможность доставить файлы самостоятельно
• Real-time доставка
Новый сборщик логов: недостатки
• Возросшая сложность системы • Высокий CPU usage на приемнике • Не масштабируется (приемник — только 1 сервер)
• Подходит только для debug-логов, не является заменой scribe
Выводы
• Начинайте с простого: старая система сделана «на коленке» и прослужила целый год
• Используйте open-source инструменты — без scribe нам было бы некуда отсылать логи
• Пишите свои системы, если нужно — новая система решает наши проблемы, ваши требования могут радикально отличаться
Open-source
Open-source• Реализация «proxy»:
https://github.com/badoo/habr/ • Доставка логов и «облако»:
https://github.com/badoo/thunder/ • Все наши open-source проекты:
https://tech.badoo.com/open-source/
ВопросыЮрий Насретдинов, Badoo
[email protected] http://habrahabr.ru/users/yourock/
доклад сделан по материалам статьи: http://habrahabr.ru/company/badoo/blog/265875/