Следующий рассказ - про велосипеды в Facebook, когда компания делала решения у себя внутри, потому что не было еще общедоступных решений в Open Source.
Шутки для посвященных. Как завалить систему, интерпретируя ответ HTTP 400 от сервиса, которого надо было вызвать по совсем другому протоколу. Сервис должен был вернуть размер памяти. Ок, "HTTP" -> toHex байт зарезервируем, нет проблем).
Данные из Prometheus хранятся ВСЕГДА. Можно поднять историю за любой момент в прошлом. Сильное решение!
Scuba - хранилище данных внутри Facebook, работает всегда быстро (шутка про ELK), и имеет неплохой UI для отображения графиков и всех данных.
Оказывается, в сети есть даже Paper про эту систему: https://research.fb.com/publications/scuba-diving-into-data-at-facebook/
Facebook Research
Scuba: Diving into Data at Facebook
Facebook takes performance monitoring seriously. Performance issues can impact over one billion users so we track thousands of servers, hundreds of PB of daily network traffic, hundreds of daily code...
Scuba выступает бэкендом для разных систем, например для Logview, поиск по stacktrace, все выглядит очень красиво.
Стандартный мониторинг и как у фейсбука (зелёный, неожиданно). Один пиксель - одна минута.
Каждая линия - один датацентр, сколько сохраняем данных в БД, или сколько получаем 5xx ошибок.
Очень много информации на одной картинке, но надо привыкнуть
Очень много информации на одной картинке, но надо привыкнуть
Следующая большая область ответственности у Production Engineer: чинить проблемы (инциденты, в терминах Facebook)
Очень нужны Incident Manager, который не чинит инциденты, но управляет отдельной проблемой: кому позвонить, с кем связаться, и пр.
Самый интересный инцидент “Call the Cops”, когда в Los Angeles долго не работал Facebook, и люди звонили в полицию “почините Facebook”. Звонили так часто, что шериф выступил с заявлением и просьбой не звонить больше в полицию.
Следующий инцидент “CAPSLOCK”, когда сравнение IPv6 адреса делалось сравнением строки, и при изменении адреса автоматически происходило переподключение (опустить и поднять интерфейс). Проблема происходит, если у вас два адреса одинаковые, но написаны в Upper Case или в Down Case. И это произошло на миллионах машин, в том числе на машинах с кэшем, что вызвало большое количество проблем.