Использование 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 здесь для получения дополнительных сведений, особенно с понятием макросов и переменных.
Плагин предоставляет несколько готовых панелей инструментов, включая пример панели инструментов "Простая панель инструментов OTel ClickHouse" для данных логирования и трассировки, которые соответствуют спецификации OTel. Это требует от пользователей соблюдения стандартных имен колонок для OTel и может быть установлено из конфигурации источника данных.

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

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

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