Перейти к основному содержимому
Перейти к основному содержимому

Использование Grafana и ClickHouse для наблюдаемости

Grafana является предпочтительным инструментом визуализации для данных наблюдаемости в ClickHouse. Это достигается с использованием официального плагина ClickHouse для Grafana. Пользователи могут следовать инструкциям по установке, найденным здесь.

V4 плагина делает логи и трассировки первоклассными гражданами в новом опыте построения запросов. Это снижает необходимость для SRE писать SQL-запросы и упрощает SQL-основанную наблюдаемость, продвигая эту новую парадигму. Часть этого достигается за счет размещения Open Telemetry (OTel) в центре плагина, так как мы считаем, что это станет основой SQL-основанной наблюдаемости в ближайшие годы и тем, как будут собираться данные.

Интеграция Open Telemetry

При настройке источника данных ClickHouse в Grafana плагин позволяет пользователям указать базу данных и таблицу по умолчанию для логов и трассировок, а также соответствуют ли эти таблицы схеме OTel. Это позволяет плагину возвращать колонки, необходимые для корректного отображения логов и трассировок в Grafana. Если вы внесли изменения в схему OTel по умолчанию и предпочитаете использовать свои собственные имена колонок, их можно указать. Использование стандартных имен колонок OTel для таких колонок, как время (Timestamp), уровень логирования (SeverityText) или тело сообщения (Body), означает, что изменения не требуются.

HTTP или Native

Пользователи могут подключать Grafana к ClickHouse как по протоколу HTTP, так и по протоколу Native. Последний предлагает незначительные преимущества по производительности, которые вряд ли будут заметны в агрегирующих запросах, выданных пользователями Grafana. В свою очередь, протокол HTTP обычно проще для пользователей для прокси и инспекции.

Конфигурация логов требует наличие колонки времени, уровня логирования и сообщения, чтобы логи отображались корректно.

Конфигурация трассировок немного сложнее (полный список здесь). Необходимые колонки нужны для того, чтобы последующие запросы, которые строят полный профиль трассировки, могли быть абстрагированы. Эти запросы предполагают, что данные структурированы аналогично OTel, поэтому пользователи, значительно отклоняющиеся от стандартной схемы, будут нуждаться в использовании представлений, чтобы воспользоваться этой функцией.

NEEDS ALT

После настройки пользователи могут перейти в Grafana Explore и начать искать логи и трассировки.

Логи

Если вы придерживаетесь требований Grafana к логам, пользователи могут выбрать Query Type: Log в конструкторе запросов и нажать Run Query. Конструктор запросов сформулирует запрос для отображения логов и обеспечения их корректного отображения, например:

NEEDS ALT

Конструктор запросов предоставляет простой способ изменения запроса, избегая необходимости пользователям писать SQL. Фильтрация, включая поиск логов с ключевыми словами, может быть выполнена из конструктора запросов. Пользователи, желающие написать более сложные запросы, могут переключиться на SQL-редактор. При условии, что соответствующие колонки возвращаются, а logs выбраны как тип запроса, результаты будут отображены как логи. Необходимые колонки для отображения логов перечислены здесь.

Логи к трассировкам

Если логи содержат идентификаторы трассировки, пользователи могут получить выгоду от возможности навигировать к трассировке для конкретной строки лога.

NEEDS ALT

Трассировки

Аналогично вышеописанному опыту с логами, если колонки, необходимые для отображения трассировок в Grafana, удовлетворены (например, с использованием схемы OTel), конструктор запросов может автоматически сформулировать необходимые запросы. Выбирая Query Type: Traces и нажимая Run Query, будет сгенерирован и выполнен запрос, подобный следующему (в зависимости от ваших настроенных колонок - дальнейшее предполагает использование OTel):

Этот запрос возвращает имена колонок, ожидаемые Grafana, отображая таблицу трассировок, как показано ниже. Фильтрация по длительности или другим колонкам может быть выполнена без необходимости писать SQL.

NEEDS ALT

Пользователи, желающие написать более сложные запросы, могут переключиться на SQL Editor.

Просмотр деталей трассировки

Как показано выше, идентификаторы трассировки отображаются как кликабельные ссылки. Нажав на идентификатор трассировки, пользователь может выбрать просмотр ассоциированных спанов через ссылку View Trace. Это выполняет следующий запрос (предполагая колонки OTel) для получения спанов в требуемой структуре, отображая результаты как водопад.

примечание

Обратите внимание, как вышеуказанный запрос использует материализованное представление otel_traces_trace_id_ts для выполнения поиска по идентификатору трассировки. См. Ускорение запросов - Использование материализованных представлений для поиска для получения дополнительных сведений.

NEEDS ALT

Трассировки к логам

Если логи содержат идентификаторы трассировки, пользователи могут навигировать от трассировки к соответствующим логам. Чтобы просмотреть логи, нажмите на идентификатор трассировки и выберите View Logs. Это выполняет следующий запрос, предполагая стандартные колонки OTel.

NEEDS ALT

Дашборды

Пользователи могут создавать дашборды в Grafana, используя источник данных ClickHouse. Мы рекомендуем ознакомиться с документацией по источнику данных Grafana и ClickHouse для получения дополнительных деталей, особенно с концепцией макросов и переменных.

Плагин предлагает несколько готовых дашбордов, включая пример дашборда «Простой дашборд ClickHouse OTel» для данных логирования и трассировки, соответствующих спецификации OTel. Это требует, чтобы пользователи соответствовали стандартным именам колонок OTel и может быть установлен из конфигурации источника данных.

NEEDS ALT

Мы предоставляем несколько простых советов по созданию визуализаций ниже.

Временные ряды

Помимо статистики, линейные графики являются самой распространенной формой визуализации, используемой в случаях наблюдаемости. Плагин Clickhouse автоматически отобразит линейный график, если запрос возвращает datetime, именованный time, и числовую колонку. Например:

NEEDS ALT

Мульти-линиейные графики

Мульти-линиейные графики будут автоматически отображаться для запроса при соблюдении следующих условий:

  • поле 1: поле datetime с псевдонимом time
  • поле 2: значение для группировки. Это должно быть строкой.
  • поле 3+: метрики значений

Например:

NEEDS ALT

Визуализация геоданных

Мы исследовали возможность обогащения данных наблюдаемости геокоординатами, используя IP-словарь в предыдущих разделах. Предполагая, что у вас есть колонки latitude и longitude, наблюдаемость может быть визуализирована с использованием функции geohashEncode. Это производит геохэши, совместимые с графиком Geo Map в Grafana. Пример запроса и визуализации показаны ниже:

NEEDS ALT