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