ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)Ontico
Сначала несколько слов про предпосылки задачи.
1. Что нам завещали деды: zcat | cut | sort | uniq -c | sort -nr . На самом деле, нормально работает, когда на проекте есть только лог nginx и не больше пары ГБ в день. В случае аварий tail -f | grep позволяет найти проблему за пару минут.
При первой же попытке параллелизации инстансов работать становится неудобно, нужна
2. Сборка логов: syslog-ng, rsyslog etc. Логи с локальных syslogd по UDP агрегируются в одно общее файловое хранилище.
Помогает собирать файлы логов с разных инстансов или сервисов. Минусы:
* Мы по-прежнему ограничены общим объемом логов. Текущие аварии на одном сервисе локализуются сравнительно быстро, но ретроспективная статистика строится часами.
* Появляются неприятные артефакты: задержки при доставке логов в хранилище, неупорядоченность событий в логах из-за разной задержки на разных инстансах. Последнее - вообще, беда, так как по-хорошему требует полной пересортировки лога.
* Поскольку события хранятся как строки в файлах логов, нет жесткой необходимости соблюдать формат. Значит, он соблюдаться и не будет. Нет, все будут стараться, но косяки все равно постоянно будут возникать.
* Отвратительно (муторно, медленно, вручную) работает трекинг проблемных реквестов, особенно в сложных системах с десятками взаимосвязанных сервисов.
3. Ок, давайте сделаем все правильно:
* для всех логов будет описан формат полей;
* события вместо файлов будут храниться в горизонтально масштабируемой БД;
* большинство агрегатов будет рассчитано заранее.
Дальше пара слайдов про компоненты ELK и переходим к главному: как Kibana помогает в локализации проблем.
Полезные фичи Elastic & Kibana:
* мгновенное масштабирование от месяцев до долей секунд;
* статистика распределения для каждого поля по любому диапазону и фильтру;
* field templates;
* significant terms filtering;
* geohashing;
Несколько кейсов, где Кибана выступает отлично:
* Получение списка объектов/пользователей, на которых возникают проблемы;
* Трекинг связанных проблем на разных сервисах;
* Просмотр сессии конкретного пользователя;
* Выявление аномальных пользователей (ботов);
* Отслеживание последующих действий пользователей, попавших во всплеск активности. Средства вроде graphite визуализируют только суммарные значения, а сильная сторона Kibana именно в трекинге отдельных пользователей.
Метрики и дашборды: тут они с graphite примерно одинаково гибки, но упомянуть об этом надо.
* Как отслеживать связанные события в разных логах? Связка через общий request_id vs полное добавление контекста в событие.
* LogStash vs fluentd для доставки? Мы выбрали fluentd - меньше затраты ресурсов.
Кратенько об альтернативах, плюсы-минусы:
* realtime log readers: LogWatch
* LaaS: Splunk
Планирование требуемых ресурсов, (не-)линейность масштабирования.
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
The Application of Static Analysis to Optimize the Dynamic Detection of Race Conditions
Yakov Roskoshnyy, Dmitry Tsitelov, Vitaly Trifanov, Roman Elizarov,Saint Petersburg State University of Information Technologies, Mechanics and Optics, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
В какой-то момент кто-то в интернете решил: всё, что мы можем вычислить, мы должны вычислить где-то на “большой мощной машине”. Так родилась заново идея “тонкого клиента”, поработившая сознание разработчиков современных веб-приложений. Всё, на что способно пользовательское приложение, в 90% кейсов сегодня - красиво отрисовать контент по данным, рассчитанным удаленной машиной в одном из дата-центров. При этом сложность расчетов и разнообразие данных растет быстрее, чем линейно, требуя все больше вычислительных ресурсов “больших мощных машин”, а также усилий по их проектированию, разработке, сопровождению, что в конечном счете приводит ко все более возрастающей стоимости владения. Однако, при этом растет разнообразие и, что немаловажно, мощность клиентских мобильных девайсов - основных потребителей того самого контента.
Парадокс заключается в том, что рост этот не приводит к очередной смене парадигмы разработки, никто не хочет переносить вычисления к клиенту и тем самым снижать возрастающие затраты эксплуатации. Отчасти это объясняется понятным образом: ресурсы мобильных устройств ограничены памятью и временем работы от аккумулятора, их хочется экономить.
Однако, чем дальше развивается эта аппаратно-программная история, тем всё менее убедительно выглядят такие аргументы. Пора запустить очередную фазу развития спирали - вернуться к разговору о новых “толстых клиентах” с новыми знаниями о том, как экономить исчерпаемые ресурсы их аппаратной части. И да - клиентов много, их вычисления нам ничего не стоят.
В этом докладе будет рассказано о том:
- почему уже хорошо перемещать вычисления к мобильному клиенту, а не нагружать серверную часть;
- какие средства доступны для разработчика на одной из мобильных платформ;
- какие трюки позволят сократить время вычислений и энергопотребление;
- почему быстро - не всегда энергоэффективно.
А также немного поговорим о вычислительной моде. Модные API прямо в телефоне:
- CNN (сверточная нейронная сеть) с железным ускорением.
- Металлические сети компараторов.
There are hundreds of JVM parameters and options out there. Here we are going to take a closer look at the internal structure of HotSpot VM while over-viewing memory spaces and different types of Garbage Collectors.
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)Ontico
Сначала несколько слов про предпосылки задачи.
1. Что нам завещали деды: zcat | cut | sort | uniq -c | sort -nr . На самом деле, нормально работает, когда на проекте есть только лог nginx и не больше пары ГБ в день. В случае аварий tail -f | grep позволяет найти проблему за пару минут.
При первой же попытке параллелизации инстансов работать становится неудобно, нужна
2. Сборка логов: syslog-ng, rsyslog etc. Логи с локальных syslogd по UDP агрегируются в одно общее файловое хранилище.
Помогает собирать файлы логов с разных инстансов или сервисов. Минусы:
* Мы по-прежнему ограничены общим объемом логов. Текущие аварии на одном сервисе локализуются сравнительно быстро, но ретроспективная статистика строится часами.
* Появляются неприятные артефакты: задержки при доставке логов в хранилище, неупорядоченность событий в логах из-за разной задержки на разных инстансах. Последнее - вообще, беда, так как по-хорошему требует полной пересортировки лога.
* Поскольку события хранятся как строки в файлах логов, нет жесткой необходимости соблюдать формат. Значит, он соблюдаться и не будет. Нет, все будут стараться, но косяки все равно постоянно будут возникать.
* Отвратительно (муторно, медленно, вручную) работает трекинг проблемных реквестов, особенно в сложных системах с десятками взаимосвязанных сервисов.
3. Ок, давайте сделаем все правильно:
* для всех логов будет описан формат полей;
* события вместо файлов будут храниться в горизонтально масштабируемой БД;
* большинство агрегатов будет рассчитано заранее.
Дальше пара слайдов про компоненты ELK и переходим к главному: как Kibana помогает в локализации проблем.
Полезные фичи Elastic & Kibana:
* мгновенное масштабирование от месяцев до долей секунд;
* статистика распределения для каждого поля по любому диапазону и фильтру;
* field templates;
* significant terms filtering;
* geohashing;
Несколько кейсов, где Кибана выступает отлично:
* Получение списка объектов/пользователей, на которых возникают проблемы;
* Трекинг связанных проблем на разных сервисах;
* Просмотр сессии конкретного пользователя;
* Выявление аномальных пользователей (ботов);
* Отслеживание последующих действий пользователей, попавших во всплеск активности. Средства вроде graphite визуализируют только суммарные значения, а сильная сторона Kibana именно в трекинге отдельных пользователей.
Метрики и дашборды: тут они с graphite примерно одинаково гибки, но упомянуть об этом надо.
* Как отслеживать связанные события в разных логах? Связка через общий request_id vs полное добавление контекста в событие.
* LogStash vs fluentd для доставки? Мы выбрали fluentd - меньше затраты ресурсов.
Кратенько об альтернативах, плюсы-минусы:
* realtime log readers: LogWatch
* LaaS: Splunk
Планирование требуемых ресурсов, (не-)линейность масштабирования.
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
The Application of Static Analysis to Optimize the Dynamic Detection of Race Conditions
Yakov Roskoshnyy, Dmitry Tsitelov, Vitaly Trifanov, Roman Elizarov,Saint Petersburg State University of Information Technologies, Mechanics and Optics, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
В какой-то момент кто-то в интернете решил: всё, что мы можем вычислить, мы должны вычислить где-то на “большой мощной машине”. Так родилась заново идея “тонкого клиента”, поработившая сознание разработчиков современных веб-приложений. Всё, на что способно пользовательское приложение, в 90% кейсов сегодня - красиво отрисовать контент по данным, рассчитанным удаленной машиной в одном из дата-центров. При этом сложность расчетов и разнообразие данных растет быстрее, чем линейно, требуя все больше вычислительных ресурсов “больших мощных машин”, а также усилий по их проектированию, разработке, сопровождению, что в конечном счете приводит ко все более возрастающей стоимости владения. Однако, при этом растет разнообразие и, что немаловажно, мощность клиентских мобильных девайсов - основных потребителей того самого контента.
Парадокс заключается в том, что рост этот не приводит к очередной смене парадигмы разработки, никто не хочет переносить вычисления к клиенту и тем самым снижать возрастающие затраты эксплуатации. Отчасти это объясняется понятным образом: ресурсы мобильных устройств ограничены памятью и временем работы от аккумулятора, их хочется экономить.
Однако, чем дальше развивается эта аппаратно-программная история, тем всё менее убедительно выглядят такие аргументы. Пора запустить очередную фазу развития спирали - вернуться к разговору о новых “толстых клиентах” с новыми знаниями о том, как экономить исчерпаемые ресурсы их аппаратной части. И да - клиентов много, их вычисления нам ничего не стоят.
В этом докладе будет рассказано о том:
- почему уже хорошо перемещать вычисления к мобильному клиенту, а не нагружать серверную часть;
- какие средства доступны для разработчика на одной из мобильных платформ;
- какие трюки позволят сократить время вычислений и энергопотребление;
- почему быстро - не всегда энергоэффективно.
А также немного поговорим о вычислительной моде. Модные API прямо в телефоне:
- CNN (сверточная нейронная сеть) с железным ускорением.
- Металлические сети компараторов.
There are hundreds of JVM parameters and options out there. Here we are going to take a closer look at the internal structure of HotSpot VM while over-viewing memory spaces and different types of Garbage Collectors.
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 6 июня, 15:00
Тезисы:
http://backendconf.ru/2017/abstracts/2710.html
В данном докладе я дам обзор системных интерфейсов, которые предоставляет Linux для эффективной обработки запросов. В частности, речь пойдет о мультиплексировании ввода-вывода, отправке файлов и многопоточной обработке входящих соединений. Расскажу о нюансах и недостатках в сравнении с аналогичными интерфейсами других unix-подобных операционных систем. Личный опыт показывает, что продуманность и качество реализации интерфейса для прикладных программ — это, к сожалению, довольно слабая сторона ядра Linux.
Работа с данными выделилась в отдельную область разработки. Гига-, тера-, петабайты информации поражают воображение и озадачивают, когда дело доходит до тестирования. Hadoop, Spark, ETL - непонятные слова, к которым непонятно, как подступиться. На основе своего опыта разработки wordpress.com Игорь поделится опытом обеспечения качества в области больших данных. В рамках его доклада вы узнаете, как традиционные подходы к тестированию и автоматизации тестирования соотносятся с Big Data-решениями, а также, какие специфические проблемы требуется решать, когда дело доходит до QA.
Презентация подготовлена по материалам выступления Игоря Хрола на витебской конференции “Developer's Software Conference” (30.11.2019).
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...Iosif Itkin
Tools & Methods of Program Analysis TMPA-2013
Senov, А , Kostroma State Technological University
Applying OLAP and MapReduce Technologies for Performance Testing Results Processing
На данном докладе мы познакомимся с новейшими методами проектирования сложных междисциплинарных систем (на примере РЛС), и посмотрим, как Модельно-Ориентированное Проектирование (МОП) помогает создавать подобные системы с меньшими трудозатратами.
TMPA-2013: Shipin System-C Control PointsIosif Itkin
Tools & Methods of Program Analysis (TMPA-2013)
Shipin, А.А., Sokolov, V.А., Chaliy, D.U., Yaroslavl State University
The Usage of Check Points for System-C Program Verification
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 5 июня, 10:00
Тезисы:
http://backendconf.ru/2017/abstracts/2773.html
В этом докладе я рассмотрю несколько перспективных, на мой взгляд, баз данных, которые пока еще не очень популярны, но которые определенно ждет успех в будущем, особенно для highload-проектов. Я расскажу о Tarantool, ClickHouse и CockroachDB, о том, как они устроены, и почему я считаю, что они в будущем станут стандартом де-факто, как раньше был MySQL, а сейчас — MongoDB.
...
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)Ontico
Байткод эрланга выполняет очень хорошо отлаженная виртуальная машина BEAM, которая превосходно работает даже на современных 72-х и более ядерных компьютерах.
Ключевая возможность эрланга в том, чтобы использовать все ядра в одном приложении, т.е. иметь в памяти одни и те же данные и обеспечивать к ним доступ без запуска кучи экземпляров одного и того же приложения по количеству ядер.
С ростом обрабатываемого трафика данных начинают возникать проблемы с многоядерным доступом к данным, возникают бутылочные горлышки и более низкоуровневые проблемы синхронизации.
В этом докладе будет рассказано, какие есть методы поиска, анализа, замера и устранения различных проблем, связанных с многотредностью: синглтонные процессы, простаивания на мьютексах и т.п.
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentIosif Itkin
Multi-Module Application Tracing in z/OS Environment
Rostislav Efremov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Завершающий доклад дня будет посвящён реализации и верификации разработанных алгоритмов обработки сигналов на конечных целевых платформах. Мы продемонстрируем современный подход к решению этой задачи в рамках концепции МОП, подразумевающий активное использование поведенческой модели алгоритма, а также автоматизацию многих этапов разработки и тестирования.
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
Мы обсудим несколько фундаментальных ситуаций использования РСУБД (каждая из которых неоднократно встречалась автору), попутно разбирая возможные ошибки:
- элементарная модификация данных;
- работа с датой, временем и временными зонами;
- проверка ограничений целостности;
- очередь заданий;
- пакетная работа с данными (например, удаление пачки записей в таблице);
- полнотекстовый поиск;
- относительно новые задачи (создание API, machine learning).
- Как начать развивать систему аналитики в компании, не имея армию data-инженеров.
- Как перейти из состояния «я не понимаю какие квадратики на этой схеме нужны для моих задач» и при этом не уйти в R&D на несколько месяцев.
- Как реализовать потоковую обработку данных на PHP (~40К записей в минуту).
- Какие технические решения применяли в нашем решении и какие факторы учитывали в принятии решений.
Презентация с мероприятия https://habr.com/ru/company/tuturu/blog/426059/
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 6 июня, 15:00
Тезисы:
http://backendconf.ru/2017/abstracts/2710.html
В данном докладе я дам обзор системных интерфейсов, которые предоставляет Linux для эффективной обработки запросов. В частности, речь пойдет о мультиплексировании ввода-вывода, отправке файлов и многопоточной обработке входящих соединений. Расскажу о нюансах и недостатках в сравнении с аналогичными интерфейсами других unix-подобных операционных систем. Личный опыт показывает, что продуманность и качество реализации интерфейса для прикладных программ — это, к сожалению, довольно слабая сторона ядра Linux.
Работа с данными выделилась в отдельную область разработки. Гига-, тера-, петабайты информации поражают воображение и озадачивают, когда дело доходит до тестирования. Hadoop, Spark, ETL - непонятные слова, к которым непонятно, как подступиться. На основе своего опыта разработки wordpress.com Игорь поделится опытом обеспечения качества в области больших данных. В рамках его доклада вы узнаете, как традиционные подходы к тестированию и автоматизации тестирования соотносятся с Big Data-решениями, а также, какие специфические проблемы требуется решать, когда дело доходит до QA.
Презентация подготовлена по материалам выступления Игоря Хрола на витебской конференции “Developer's Software Conference” (30.11.2019).
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...Iosif Itkin
Tools & Methods of Program Analysis TMPA-2013
Senov, А , Kostroma State Technological University
Applying OLAP and MapReduce Technologies for Performance Testing Results Processing
На данном докладе мы познакомимся с новейшими методами проектирования сложных междисциплинарных систем (на примере РЛС), и посмотрим, как Модельно-Ориентированное Проектирование (МОП) помогает создавать подобные системы с меньшими трудозатратами.
TMPA-2013: Shipin System-C Control PointsIosif Itkin
Tools & Methods of Program Analysis (TMPA-2013)
Shipin, А.А., Sokolov, V.А., Chaliy, D.U., Yaroslavl State University
The Usage of Check Points for System-C Program Verification
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 5 июня, 10:00
Тезисы:
http://backendconf.ru/2017/abstracts/2773.html
В этом докладе я рассмотрю несколько перспективных, на мой взгляд, баз данных, которые пока еще не очень популярны, но которые определенно ждет успех в будущем, особенно для highload-проектов. Я расскажу о Tarantool, ClickHouse и CockroachDB, о том, как они устроены, и почему я считаю, что они в будущем станут стандартом де-факто, как раньше был MySQL, а сейчас — MongoDB.
...
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)Ontico
Байткод эрланга выполняет очень хорошо отлаженная виртуальная машина BEAM, которая превосходно работает даже на современных 72-х и более ядерных компьютерах.
Ключевая возможность эрланга в том, чтобы использовать все ядра в одном приложении, т.е. иметь в памяти одни и те же данные и обеспечивать к ним доступ без запуска кучи экземпляров одного и того же приложения по количеству ядер.
С ростом обрабатываемого трафика данных начинают возникать проблемы с многоядерным доступом к данным, возникают бутылочные горлышки и более низкоуровневые проблемы синхронизации.
В этом докладе будет рассказано, какие есть методы поиска, анализа, замера и устранения различных проблем, связанных с многотредностью: синглтонные процессы, простаивания на мьютексах и т.п.
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentIosif Itkin
Multi-Module Application Tracing in z/OS Environment
Rostislav Efremov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Завершающий доклад дня будет посвящён реализации и верификации разработанных алгоритмов обработки сигналов на конечных целевых платформах. Мы продемонстрируем современный подход к решению этой задачи в рамках концепции МОП, подразумевающий активное использование поведенческой модели алгоритма, а также автоматизацию многих этапов разработки и тестирования.
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
Мы обсудим несколько фундаментальных ситуаций использования РСУБД (каждая из которых неоднократно встречалась автору), попутно разбирая возможные ошибки:
- элементарная модификация данных;
- работа с датой, временем и временными зонами;
- проверка ограничений целостности;
- очередь заданий;
- пакетная работа с данными (например, удаление пачки записей в таблице);
- полнотекстовый поиск;
- относительно новые задачи (создание API, machine learning).
- Как начать развивать систему аналитики в компании, не имея армию data-инженеров.
- Как перейти из состояния «я не понимаю какие квадратики на этой схеме нужны для моих задач» и при этом не уйти в R&D на несколько месяцев.
- Как реализовать потоковую обработку данных на PHP (~40К записей в минуту).
- Какие технические решения применяли в нашем решении и какие факторы учитывали в принятии решений.
Презентация с мероприятия https://habr.com/ru/company/tuturu/blog/426059/
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
Системы класса SIEM могут быть вполне применимы не только для информационной безопасности, но и ИТ персоналом, разработчиками для своевременного обнаружения и предотвращения инцидентов
Доклад является обобщением моего опыт по работе с системами мониторинга серверных приложений в Qiwi.
Цель доклада:
- Получить общее представление о подходах к мониторингу серверных приложений
- Разобраться с популярными средствами для мониторинга серверных приложений
Оглавление:
- Мотивация
- Теория
---- Определение
---- Модель системы с точки зрения мониторинга
---- Классификация систем мониторинга
---- Уровни мониторинга
---- Инструменты мониторинга
- Практика
---- Системы мониторинга и сбора логов
---- Интерфейсы мониторинга
---- Инструменты мониторинга в JVM-based приложениях
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
Огромная часть работы службы эксплуатации, так или иначе, связана с мониторингом существующей инфраструктуры.
Если система мониторинга настроена хорошо, она позволяет сократить время простоя, какие-то проблемы показать на ранней стадии, формализовать рабочие процессы команды админов.
То есть она является носителем знания о нашей инфраструктуре и о том, как именно работают админы.
Можно ли извлечь дополнительную пользу из этого?
В hh.ru мы используем систему мониторинга ещё и как check list для повседневных задач админов (алерты в данном случае являются задачами для человека: сделал задачу - триггер проверил результат и погас), идея взята из TDD.
Также расскажу, как мы работаем с внештатными ситуациями: реагируем на алерты, чиним, разбираем и классифицируем.
Еще на основе разобранных инцидентов мы считаем показатели работы службы эксплуатации, из этих показателей высчитываются наши премии (данный KPI получился удачным: с ним согласен и бизнес и админы).
SmartMonitoring - мониторинг бизнес-логики в Одноклассниках / Сергей Шарапов ...Ontico
Самым критичным в мониторинге бизнес-логики является этап выяснения сути инцидента, зачастую он занимает значительное время и требует высокой квалификации сотрудника, так как основные показатели работы сайта и сервисов представлены более чем 100 тысячами графиков, и нахождение первоисточника - не самое простое дело. Поэтому была создана система мониторинга (SmartMonitoring), которая умеет находить аномалии в работе портала и показывать связь между ними, что значительно упрощает работу как администраторам, так и программистам. Такая система помогает в случае инцидента понять, какой именно среди десятков наших сервисов засбоил первым и, соответственно, ускоряет распутывание «клубка» в процессе расследования инцидента и помогает быстро находить сервис, который во всем виноват.
В этом докладе я расскажу, как мы создали такую систему, как она работает, и с какими трудностями мы столкнулись.
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий Смирнов (ведущий разработчик Фотостраны).
Badoo — это большая социальная сеть с более чем 180 млн. пользователей. Большинство новых фич в нашей компании мы предварительно оцениваем посредством A/B тестирования. Вот уже примерно год мы используем собственный высоконагруженный фреймворк тестирования, при этом по моему мнению он очень прост, понятен, и не требует огромных ресурсов на разработку и поддержку. В докладе я расскажу вам о том, почему мы пришли к собственному решению, его архитектуру и принципы работы. Я уверен, каждый из вас может сделать что-то подобное для своего проекта и начать принимать более обоснованные решения.
Тезисы:
* Как мы раньше тестировали
* Почему мы сделали свой инструмент
* Архитектура: API, граф. интерфейсы, транспорт, скрипты, БД
* Структура теста
* Основные правила А/Б тестирования
* Оценка результатов, примеры отчетов
* И заключительная часть про то, что от человека с головой полностью не избавиться
Для кого доклад:
Для разработчиков и техн. менеджеров соц. сетей, сайтов объявлений, блогов с рассылками, проектов, продающих что-то через e-mail расслыки, разных коммьюнити-сайтов, банков и вообще проектов, где взаимодействие с каждым клиентом долгосрочное.
Сложность:
Несмотря на то, что конференция называется Highload++, я уверяю, что представленную здесь архитектуру может потянуть проект с посещаемостью в 1000 чел в день и тремя программистами в штате. Закодить все, что здесь рассказано на PHP займет меньше недели одного человека. А результат, между прочим, пожно вполне изменрять в живой прибыли.
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2964.html
Одноклассники состоят из более чем восьми тысяч железных серверов, расположенных в нескольких дата-центрах. Каждая из этих машин была специализированной под конкретную задачу - как для обеспечения изоляции отказов, так и для обеспечения автоматизированного управления инфраструктурой.
...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/3032.html
Протокол DNS на семь лет старше, чем Всемирная паутина. Стандарты RFC 882 и 883, определяющие основную функциональность системы доменных имён, появились в конце 1983 года, а первая реализация последовала уже годом позже. Естественно, что у технологии столь старой и при этом по сей день активнейшим образом используемой просто не могли не накопиться особенности, неочевидные обыкновенным пользователям.
...
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/3010.html
В этом докладе я расскажу, как BigData-платформа помогает трансформировать Почту России, как мы управляем построением и развитием платформы. Расскажу про найденные удачные решения, например, как разбиение на продукты с понятными SLA и интерфейсами между ними помогло нам сохранять управляемость с ростом масштабов проекта.
...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2854.html
Из этого доклада вы узнаете о возможностях репликации и автофейловера PostgreSQL, в том числе о возможностях, ставших доступных в PostgreSQL 10.
Среди прочих, будет затронуты следующие темы:
* Виды репликации и решаемые с ее помощью проблемы.
* Настройка потоковой репликации.
* Настройка логической репликации.
* Настройка автофейловера / HA средствами Stolon и Consul.
После прослушивания доклада вы сможете самостоятельно настраивать репликацию и автофейловер PostgreSQL.
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/3096.html
PostgreSQL is the world’s most advanced open source database. Indeed! With around 270 configuration parameters in postgresql.conf, plus all the knobs in pg_hba.conf, it is definitely ADVANCED!
How many parameters do you tune? 1? 8? 32? Anyone ever tuned more than 64?
No tuning means below par performance. But how to start? Which parameters to tune? What are the appropriate values? Is there a tool --not just an editor like vim or emacs-- to help users manage the 700-line postgresql.conf file?
Join this talk to understand the performance advantages of appropriately tuning your postgresql.conf file, showcase a new free tool to make PostgreSQL configuration possible for HUMANS, and learn the best practices for tuning several relevant postgresql.conf parameters.
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/3115.html
During this session we will cover the last development in ProxySQL to support regular expressions (RE2 and PCRE) and how we can use this strong technique in correlation with ProxySQL's query rules to anonymize live data quickly and transparently. We will explain the mechanism and how to generate these rules quickly. We show live demo with all challenges we got from the Community and we finish the session by an interactive brainstorm testing queries from the audience.
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2957.html
Расскажем о нашем опыте разработки модуля межсетевого экрана для MySQL с использованием генератора парсеров ANTLR и языка Kotlin.
Подробно рассмотрим следующие вопросы:
— когда и почему целесообразно использовать ANTLR;
— особенности разработки ANTLR-грамматики для MySQL;
— сравнение производительности рантаймов для ANTLR в рамках задачи синтаксического анализа MySQL (C#, Java, Kotlin, Go, Python, PyPy, C++);
— вспомогательные DSL;
— микросервисная архитектура модуля экранирования SQL;
— полученные результаты.
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3114.html
ProxySQL aims to be the most powerful proxy in the MySQL ecosystem. It is protocol-aware and able to provide high availability (HA) and high performance with no changes in the application, using several built-in features and integration with clustering software. During this session we will quickly introduce its main features, so to better understand how it works. We will then describe multiple use case scenarios in which ProxySQL empowers large MySQL installations to provide HA with zero downtime, read/write split, query rewrite, sharding, query caching, and multiplexing using SSL across data centers.
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2954.html
MySQL Replication is powerful and has added a lot of advanced features through the years. In this presentation we will look into replication technology in MySQL 5.7 and variants focusing on advanced features, what do they mean, when to use them and when not, Including.
When should you use STATEMENT, ROW or MIXED binary log format?
What is GTID in MySQL and MariaDB and why do you want to use them?
What is semi-sync replication and how is it different from lossless semi-sync?
...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 12:00
Тезисы:
http://www.highload.ru/2017/abstracts/3120.html
Количество разработчиков мобильных приложений Сбербанк Онлайн с начала 2016 года выросло на порядок. Для того чтобы продолжать выпускать качественный продукт, мы кардинально перестраиваем процесс разработки.
Количество внутренних заказчиков тех или иных доработок в какой-то момент выросло настолько, что разработчики стали узким местом. Мы внедрили культуру разработки, которую можно условно назвать "внутренним open-source", сохранив за собой контроль над архитектурой и качеством проекта, но позволив разрабатывать новые фичи всем желающим.
...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2836.html
При использовании Eventually Consistent распределенных баз данных нет гарантий, что чтение возвращает результаты последних изменений данных, если чтение и запись производятся на разных узлах. Это ограничивает пропускную способность системы. Поддержка свойства Causal Consistency снимает это ограничение, что позволяет улучшить масштабируемость, не требуя изменений в коде приложения.
...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/2858.html
Аудитория Одноклассников превышает 73 миллиона человек в России, СНГ и странах дальнего зарубежья. При этом ОК.ru - первая социальная сеть по просмотрам видео в рунете и крупнейшая сервисная платформа.
Качественный и количественный рост DDoS-атак за последние годы превращает их в одну из первоочередных проблем для крупнейших интернет-ресурсов. В зависимости от вектора атаки “узким” местом становится та или иная часть инфраструктуры. В частности, при SYN-flood первый удар приходится на систему балансировки трафика. От ее производительности зависит успех в противостоянии атаке.
...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/3008.html
Никогда не было и вот снова случилось! Компания Google в результате перенаправления трафика сделала недостпуными в Японии несколько тысяч различных сервисов, большинство из которых никак не связано с самой компанией Google. Однако, подобные инциденты происходят с завидной регулярностью, вот только не всегда попадают в большие СМИ. У таких инцидентов могут быть разные причины, начиная от ошибок сетевых инженеров и заканчивая государственным регулированием.
...
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2925.html
Облака и виртуализация – современные тренды развития IT-технологий. Операторы связи строят свои TelcoClouds на стандартах NFV (Network Functions Virtualization) и SDN (Software-Defined Networking). В докладе начнем с основ виртуализации, далее разберемся, для чего используются NFV и SDN, потом полетим к облакам и вернемся на землю для решения практических задач!
...
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/3045.html
Как мы заставили Druid работать в Одноклассниках.
«Druid is a high-performance, column-oriented, distributed data store» http://druid.io.
Мы расскажем о том, как, внедрив Druid, мы справились с ситуацией, когда MSSQL-based система статистики на 50 терабайт стала:
- медленной: средняя скорость ответа была в разы меньше требуемой (и увеличилась в 20 раз);
- нестабильной: в час пик статистика отставала до получаса (теперь ничего не отстает);
- дорогой: изменилась политика лицензирования Microsoft, расходы на лицензии могли составить миллионы долларов.
...
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2905.html
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров.
...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2913.html
Изначально будут раскрыты базовые причины, которые заставили появиться такой части механизма СУБД, как кэш результатов, и почему в ряде СУБД он есть или отсутствует.
Будут рассмотрены различные варианты кэширования результатов как sql-запросов, так и результатов хранимой в БД бизнес-логики. Произведено сравнение способов кэширования (программируемые вручную кэши, стандартный функционал) и даны рекомендации, когда и в каких случаях данные способы оптимальны, а порой опасны.
...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2947.html
Apache Ignite — Open Source платформа для высокопроизводительной распределенной работы с большими данными с применением SQL или Java/.NET/C++ API. Ignite используют в самых разных отраслях. Сбербанк, ING, RingCentral, Microsoft, e-Therapeutics — все эти компании применяют решения на основе Ignite. Размеры кластеров разнятся от всего одного узла до нескольких сотен, узлы могут быть расположены в одном ЦОД-е или в нескольких геораспределенных.
...
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 12:00
Тезисы:
http://www.highload.ru/2017/abstracts/3005.html
Когда мы говорим о нагруженных системах и базах данных с большим числом параллельных коннектов, особый интерес представляет практика эксплуатации и сопровождения таких проектов. В том числе инструменты и механизмы СУБД, которые могут быть использованы DBA и DevOps-инженерами для решения задач мониторинга жизнедеятельности базы данных и ранней диагностики возможных проблем.
...
Применение статистических методов и инструментов для анализа производительности систем, Алексей Лавренюк (Яндекс)
1. Анализ данных о
производительности
систем
Алексей Лавренюк, Яндекс
2. Предмет изучения
• Система анализирует поток
событий и ищет в нем важные
• Данные поступают пачками по
несколько миллионов событий
• Пачки поступают регулярно,
размеры пачек варьируются
• Нужно успевать обработать
пачку, пока не пришла новая
изображение куплено на http://ru.fotolia.com
3. Что мы хотим знать
• Запас производительности
• Уметь сравнивать стенды и
релизы
• Следить за трендами и замечать
нештатные ситуации
Нам нужен градусник. Но не
средняя температура по больнице!
изображение куплено на http://ru.fotolia.com
4. Стрельбы
• Готовим тестовый стенд: танк и мишень
• Собираем патронную ленту
• Стреляем линейно возрастающей нагрузкой и смотрим, что происходит с
системой
5. Почему это может не работать
• Пакетная обработка логов событий: несколько миллионов событий в
каждом
• История важна: нельзя сгенерировать синтетическую нагрузку заданного
уровня. Можно только хитро умножить входную нагрузку на
коэффициент.
6. Что внутри
• Три мастера, которые ставят задачки
шестнадцати машинкам
• Лог — это табличка MySQL с
событиями. Одна строка — одно
событие
• Над каждым логом колдуют
множество фильтров на разных
машинках
• Фильтры зависят друг от друга и
должны синхронизироваться
Знать про архитектуру — очень важно!
Лог
событий
Размеченный
лог
Накапливается
история
7. Огонь, вода и люди работают
Смотрим на приборы
изображение куплено на http://ru.fotolia.com
8. Бизнес-метрики
• Число событий в каждом логе
• Время обработки каждого лога
• Время работы каждого фильтра
• Время отставания и размер очереди
изображение куплено на http://ru.fotolia.com
9. Системные метрики
• Загруженность процессора по ядрам
• Процессор для важных процессов
• Память: общие метрики и для
важных процессов
• Диск, сеть и т.д.
• Метрики MySQL
изображение куплено на http://ru.fotolia.com
10. Что можно увидеть
• Резкие изменения метрик,
например, изменение утилизации
ресурсов и времен обработки
логов во время экспериментов
• Следить за важными для бизнеса
метриками, например, за
отставанием или размером
очереди
11. Как докопаться до сути
Выбор метрик и поиск зависимостей
изображение куплено на http://ru.fotolia.com
12. Графиков много. Очень много
• Можно увидеть, что происходит прямо
сейчас или что происходило в прошлом
• Но аномалии не видны сразу, а иногда
не видны вообще
13. Независимые и зависимые
• Размер входных логов, их число и
характер содержимого — независимые
метрики
• Утилизация процессора, памяти, время
обработки одного лога — зависимые
метрики
• Уменьшить число измерений!
изображение куплено на http://ru.fotolia.com
14. Ищем корреляции в метриках
• Множество методов мультивариативного
анализа
• Но у нас сработала интуиция и метод проб и
ошибок: нам вообще важно только время
обработки лога. От чего оно зависит?
15. Эврика!
• Scatter plot
• Время обработки зависит (только) от общего числа событий в логе
• Линейность на основном участке и коэффициент пропорциональности
16. Большие логи
• На больших логах наблюдается нелинейный рост времен обработки
17. Маленькие логи
• Даже пустые логи обрабатываются за ненулевое время
21. Временное измерение
• Добавляем точки в
реалтайме
• Прозрачность показывает
«старение» точки
• Можно узнать, какая точка
для какого лога
Интерактивные инструменты
для работы с данными
качественно изменяют
процесс
22. Зачем нам это
• Back-to-back тесты
• Сравнение теста и
продакшна
Хотим кликнуть в
выбросы и увидеть
детали
23. Зависимости фильтров
• Автоматическое
построение и визуализация
графа зависимостей
• Взвешивание графа на
реальных данных и поиск
критического пути
• Сбор статистики о частых
критических путях
• Отображение критического
пути для любой точки на
графике
24. Критические пути
• Критические пути зависят от
входных данных
• Оптимизировать то, что лежит на
критическом пути: паузы, времена
ожидания и фильтры
• Чтобы оптимизировать, надо
увидеть
25. Следим за трендами
Автоматический анализ изменений
изображение куплено на http://ru.fotolia.com
26. Линейная регрессия
• Метод наименьших квадратов
• Шум влияет на результат
• Сложно найти выбросы
27. Кластеризация
• Много методов, мы выбрали
DBSCAN (density-based spatial
clustering of applications with
noise)
• Позволяет отсеять шум
• И заодно выявляет выбросы
• Наблюдаем за долгосрочными
трендами
28. Как исследовать
производительность
• Нарисовать архитектурную схему
• Научиться снимать метрики и
смотреть на них
• Найти входные и выходные метрики
• Найти корреляции между ними
• Научиться анализировать конкретные
точки
• Автоматизировать наблюдения изображение куплено на http://ru.fotolia.com
29. Гвозди и микроскопы
Что мы использовали в работе
изображение куплено на http://ru.fotolia.com
30. Метрики и графики
• Diamond — инструмент для сбора системных метрик.
https://github.com/BrightcoveOS/Diamond
• Graphite — сервер хранения и обработки временных рядов.
http://graphite.wikidot.com/
31. Анализ данных
• SciPy — научный фреймворк для Python.
http://www.scipy.org/
• ipython notebook — интерактивный web-shell, в котором можно
экспериментировать с вашими данными
• numpy, pandas — библиотеки для работы с данными
• scikit-learn — библиотека машинного обучения (регрессия,
кластеризация)
• networkX — библиотека для работы с графами
https://networkx.github.io/
32. Визуализация
• Highcharts — хорошие графики из коробки. Бесплатно для
некоммерческих проектов.
http://www.highcharts.com/
• d3.js — библиотека для создания интерактивной визуализации.
http://d3js.org/
• Rickshaw — библиотека для работы с графиками, поверх d3.js
http://code.shutterstock.com/rickshaw/
• yEd — удобный редактор графов
http://www.yworks.com/en/products/yfiles/yed/
33. Почитать
• Data Analysis with Open Source Tools (By Philipp K. Janert)
34. Алексей Лавренюк
twitter: @direvius
community: https://clubs.ya.ru/yandex-‐tank
чатик: https://gitter.im/yandex/yandex-‐tank
И да пребудет с вами Сила