Что это такое?
CAT — это open-source платформа мониторинга приложений в реальном времени (APM), написанная на Java в Meituan-Dianping. Она собирает метрики производительности, состояние здоровья и оповещения от ваших сервисов и превращает их в отчёты в реальном времени.
Это сервер, который я разворачиваю, или библиотека, которую я встраиваю в свой код?
И то, и другое: сервер, который вы разворачиваете, плюс клиенты, которые вы встраиваете в свои приложения для отправки данных. На стороне сервера cat-consumer строит аналитические отчёты, cat-alarm рассылает оповещения в реальном времени, а cat-hadoop архивирует данные logview в HDFS.
Как его запустить?
Склонируйте репозиторий с флагом --depth=1 (история git очень большая), выполните скрипты для базы данных из папки script, затем соберите и разверните модуль cat-home — он сразу содержит и админ-консоль, и сервер данных, и сервис оповещений.
Что можно подключать к мониторингу — какие языки и стеки поддерживаются?
Официальные клиенты есть для Java, C/C++, Node.js, Python и Go. Модуль интеграции добавляет коннекторы к распространённому middleware: фреймворкам MVC, RPC, базам данных и кэшам, очередям сообщений и системам конфигурации.
Есть ли подводные камни, о которых стоит знать заранее?
Модуль cat-client в корне репозитория устарел и будет удалён в будущей мажорной версии — используйте новый Java-клиент из lib/java. Также за истину считайте документацию из ветки master; старые сторонние конфиги могут оказаться несовместимыми.
Это нужно только на масштабе Meituan-Dianping, или небольшая команда тоже сможет этим пользоваться?
Он создавался как базовый компонент серверной инфраструктуры Meituan-Dianping, поэтому рассчитан на production-сервисы в большом масштабе — но это open source, его используют и другие компании, и они могут добавиться в список внедрений.
Какие типы данных он умеет мониторить?
Четыре модели сообщений: Transaction, Event, Heartbeat и Metric — вместе они покрывают цепочки вызовов, отдельные события, состояние в рантайме и измеряемые метрики.
Как быстро данные становятся видны?
Очень быстро: гранулярность отчётов — минутная, но путь от появления данных до полной обработки на сервере занимает секунды — в README сказано, что данные парусекундной давности видны практически сразу.
Он записывает каждый запрос или только выборку?
Метрики собираются полностью, причём агрегация вычисляется заранее на клиенте; сэмплируется только трассировка цепочки вызовов, чтобы держать объём данных под контролем.
Выдержит ли он большую production-нагрузку?
Это и есть цель проекта: высокая пропускная способность для огромных объёмов данных, отказоустойчивость, при которой мониторинг прозрачен для вашего бизнеса, и горизонтальное масштабирование на распределённых развёртываниях, в том числе между дата-центрами (cross-IDC).
What are similar projects?
signoz, pinpoint, skywalking, thanos, zipkin, VictoriaMetrics, xxl-job, jaeger
Which topics is it in?
distributed-tracing, apm, hadoop, tracing, distributed, high-availability, metrics, realtime, infrastructure, observability, distributed-systems, monitoring
