Использование 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), означает, что никаких изменений вносить не нужно.
Пользователи могут подключить Grafana к ClickHouse через HTTP или Native протокол. Последний предлагает небольшие преимущества в производительности, которые вряд ли будут заметны в агрегационных запросах, выдаваемых пользователями Grafana. Наоборот, HTTP протокол обычно проще для пользователей в проксировании и инспекции.
Конфигурация логов требует наличия столбцов времени, уровня логирования и сообщения, чтобы логи отображались корректно.
Конфигурация трассировок немного более сложная (полный список здесь). Необходимые столбцы требуются для того, чтобы последующие запросы, которые строят полный профиль трассировки, могли быть абстрагированы. Эти запросы предполагают, что данные структурированы аналогично OTel, так что пользователям, значительно отклоняющимся от стандартной схемы, нужно будет использовать представления, чтобы воспользоваться этой функцией.

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

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

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

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

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

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

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

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

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