Введение
Не только OpenTelemetryХотя мы рекомендуем использовать проект OpenTelemetry (OTel) для сбора данных, аналогичную архитектуру можно построить и с помощью других фреймворков и инструментов, например Vector и Fluentd (см. пример с Fluent Bit). Есть и альтернативные инструменты визуализации, включая Superset и Metabase.
Зачем использовать ClickHouse?
- Сжатие - Данные обсервабилити обычно содержат поля, значения которых берутся из ограниченного набора, например HTTP-коды или имена сервисов. Колоночно-ориентированное хранилище ClickHouse, в котором значения хранятся в отсортированном виде, обеспечивает очень высокую степень сжатия — особенно в сочетании со специализированными кодеками для данных временных рядов. В отличие от других хранилищ данных, которым обычно требуется столько же места, сколько занимает исходный объем данных, как правило в формате JSON, ClickHouse в среднем сжимает журналы и трассировки до 14 раз. Помимо существенной экономии места для крупных инсталляций обсервабилити, такое сжатие также ускоряет запросы, поскольку с диска нужно считывать меньше данных.
- Быстрые агрегации - Решения для обсервабилити обычно в значительной степени опираются на визуализацию данных с помощью диаграмм, например линий, показывающих уровень ошибок, или столбчатых диаграмм, показывающих источники трафика. Агрегации, или GROUP BY, лежат в основе таких диаграмм и должны оставаться быстрыми и отзывчивыми при применении фильтров в сценариях диагностики проблем. Колоночно-ориентированный формат ClickHouse в сочетании с векторизованным движком выполнения запросов идеально подходит для быстрых агрегаций, а разреженное индексирование позволяет быстро фильтровать данные в ответ на действия пользователя.
- Быстрые линейные сканирования - Хотя альтернативные технологии опираются на инвертированные индексы для быстрого выполнения запросов к журналам, это неизменно приводит к высокому потреблению дисковых и других ресурсов. Хотя ClickHouse поддерживает инвертированные индексы как дополнительный необязательный тип индекса, линейные сканирования в нем хорошо распараллеливаются и используют все доступные ядра машины (если не настроено иначе). Это потенциально позволяет сканировать десятки ГБ/с (в сжатом виде) для поиска совпадений с помощью высокооптимизированных операторов сопоставления текста.
- Знакомый SQL - SQL — повсеместно распространенный язык, знакомый всем инженерам. За более чем 50 лет развития он зарекомендовал себя как фактический стандарт для аналитики данных и по-прежнему остается третьим по популярности языком программирования. Обсервабилити — это еще одна задача работы с данными, для которой SQL подходит идеально.
- Аналитические функции - ClickHouse расширяет ANSI SQL аналитическими функциями, которые делают SQL-запросы проще и удобнее в написании. Они особенно важны при анализе первопричин, когда данные нужно детально разбирать в разных разрезах.
- Вторичные индексы - ClickHouse поддерживает вторичные индексы, такие как bloom-фильтры, чтобы ускорять определенные профили запросов. Их можно при необходимости включать на уровне столбца, что дает пользователю детальный контроль и позволяет оценить выигрыш в производительности относительно затрат.
- Открытый исходный код и открытые стандарты - Как база данных с открытым исходным кодом, ClickHouse поддерживает открытые стандарты, такие как OpenTelemetry. Возможность вносить вклад и активно участвовать в проектах привлекательна сама по себе и при этом помогает избежать проблем, связанных с привязкой к поставщику.
Когда стоит использовать ClickHouse для обсервабилити
- Вы или участники вашей команды знакомы с SQL (или хотите его изучить)
- Вы предпочитаете придерживаться открытых стандартов, таких как OpenTelemetry, чтобы избежать привязки к поставщику и обеспечить расширяемость.
- Вы готовы использовать экосистему, основанную на инновациях open-source, от сбора до хранения и визуализации.
- Вы ожидаете роста до средних или больших объёмов данных обсервабилити в управлении (или даже очень больших объёмов)
- Вы хотите контролировать TCO (совокупную стоимость владения) и избежать стремительного роста затрат на обсервабилити.
- Вы не можете или не хотите мириться с короткими сроками хранения данных обсервабилити только ради снижения затрат.
- Изучение SQL (или даже его генерация!) не привлекает вас или участников вашей команды.
- Вам нужно готовое комплексное решение для обсервабилити.
- Объёмы ваших данных обсервабилити слишком малы, чтобы это дало заметный эффект (например, <150 GiB), и их рост не ожидается.
- В вашем сценарии использования основной акцент сделан на метрики и требуется PromQL. В таком случае вы всё равно можете использовать ClickHouse для журналов и трассировки вместе с Prometheus для метрик, объединив всё это на уровне представления с помощью Grafana.
- Вы предпочитаете подождать, пока экосистема станет более зрелой, а обсервабилити на основе SQL — более готовой к использованию из коробки.
Журналы и трассировки
- Журналы - Журналы — это записи событий, происходящих в системе, с отметками времени, которые содержат подробную информацию о различных аспектах работы программного обеспечения. Данные в журналах обычно бывают неструктурированными или полуструктурированными и могут включать сообщения об ошибках, журналы пользовательской активности, изменения в системе и другие события. Журналы крайне важны для устранения неполадок, выявления аномалий и понимания того, какие именно события привели к проблемам в системе.
- Трассировки — Трассировки фиксируют путь запросов при их прохождении через различные сервисы в распределенной системе, показывая маршрут этих запросов и их производительность. Данные в трассировках имеют четкую структуру и состоят из спанов и трассировок, которые описывают каждый шаг запроса, включая временные характеристики. Трассировки дают ценную информацию о производительности системы, помогая выявлять узкие места, проблемы с задержками и оптимизировать работу микросервисов.
МетрикиХотя ClickHouse можно использовать для хранения данных метрик, в ClickHouse это направление пока развито слабее: например, еще не поддерживаются такие возможности, как формат данных Prometheus и PromQL.