Настройка источника данных ClickHouse в Grafana
Проще всего изменять конфигурацию в интерфейсе Grafana на странице настройки плагина, но источники данных также могут создаваться и настраиваться с помощью YAML‑файла.
На этой странице приведён список параметров, доступных для настройки в плагине ClickHouse, а также примеры конфигурации для тех, кто настраивает источник данных с помощью YAML.
Для быстрого ознакомления со всеми параметрами полный список параметров конфигурации можно найти здесь.
Общие настройки
Пример экрана конфигурации:

Пример конфигурации YAML для общих настроек:
Обратите внимание, что свойство version добавляется, когда конфигурация сохраняется через пользовательский интерфейс. Оно показывает версию плагина, в которой была сохранена конфигурация.
Протокол HTTP
Если вы выберете подключение по протоколу HTTP, появятся дополнительные настройки.

HTTP path
Если ваш HTTP-сервер доступен по другому URL-пути, вы можете указать его здесь.
Пользовательские HTTP-заголовки
Вы можете добавлять пользовательские заголовки к запросам, отправляемым на ваш сервер.
Заголовки могут быть как открытыми, так и защищёнными.
Все имена заголовков хранятся в открытом виде, а значения защищённых заголовков сохраняются в защищённой конфигурации (аналогично полю password).
Хотя значения защищённых заголовков хранятся в конфигурации безопасно, при отключённом защищённом соединении они всё равно будут передаваться по HTTP.
Пример YAML с открытыми и защищёнными заголовками:
Дополнительные настройки
Эти дополнительные настройки не являются обязательными.

Пример YAML:
OpenTelemetry
OpenTelemetry (OTel) глубоко интегрирован в плагин. Данные OpenTelemetry могут экспортироваться в ClickHouse с помощью нашего плагина-экспортера. Для оптимального использования рекомендуется настроить OTel как для журналов, так и для трассировок.
Также необходимо настроить эти параметры по умолчанию, чтобы включить data links — функцию, которая обеспечивает мощные сценарии наблюдаемости.
Логи
Чтобы ускорить построение запросов для логов, вы можете задать базу данных/таблицу и столбцы по умолчанию для запроса по логам. Это предварительно заполнит конструктор запросов готовым к выполнению запросом по логам, что ускорит работу на странице Explore при решении задач наблюдаемости.
Если вы используете OpenTelemetry, включите переключатель «Use OTel» и задайте default log table со значением otel_logs.
Это автоматически изменит столбцы по умолчанию в соответствии с выбранной версией схемы OTel.
Хотя использование OpenTelemetry для логов не является обязательным, единый набор данных для логов и трассировок помогает обеспечить более плавный рабочий процесс наблюдаемости со связыванием данных.
Пример экрана конфигурации логов:

Пример конфигурации логов в YAML:
Трейсы
Чтобы ускорить создание запросов для трейсов, вы можете задать базу данных/таблицу по умолчанию, а также столбцы для запроса по трейсам. Это предварительно заполнит конструктор запросов исполняемым запросом поиска по трейсам, что делает работу на странице Explore быстрее для задач наблюдаемости.
Если вы используете OpenTelemetry, следует включить переключатель "Use OTel" и задать default trace table равным otel_traces.
Это автоматически изменит столбцы по умолчанию так, чтобы использовать выбранную версию схемы OTel.
Хотя OpenTelemetry не является обязательным, эта функция работает лучше всего при использовании его схемы для трейсов.
Пример экрана настройки трейсов:

Пример конфигурации трейсов в YAML:
Псевдонимы столбцов
Использование псевдонимов столбцов — удобный способ выполнять запросы к данным под другими именами и с другими типами. С их помощью вы можете преобразовать вложенную схему данных в плоскую структуру, чтобы упростить выборку в Grafana.
Псевдонимы столбцов могут быть полезны, если:
- Вы хорошо знаете свою схему данных и большинство её вложенных свойств/типов
- Вы храните данные в типе Map
- Вы храните JSON в виде строк
- Вы часто применяете функции для преобразования выбираемых столбцов
Столбцы-алиасы, определённые в таблице
В ClickHouse встроена поддержка алиасов столбцов, и он «из коробки» работает с Grafana. Алиасы столбцов можно определять прямо в таблице.
В приведённом выше примере мы создаём псевдоним TimestampDate, который преобразует метку времени в наносекундах в значение типа Date.
Эти данные не хранятся на диске, как данные в первом столбце, а вычисляются во время выполнения запроса.
Псевдонимы, определённые на уровне таблицы, не возвращаются при SELECT *, но это поведение можно настроить в параметрах сервера.
Для получения дополнительной информации см. документацию по типу столбца ALIAS.
Таблицы с псевдонимами столбцов
По умолчанию Grafana подсказывает столбцы на основе ответа DESC table.
В некоторых случаях может потребоваться полностью переопределить столбцы, которые видит Grafana.
Это помогает скрыть схему в Grafana при выборе столбцов, что может улучшить удобство работы в зависимости от сложности вашей таблицы.
Преимущество этого подхода по сравнению с псевдонимами, определёнными в таблице, состоит в том, что вы можете легко обновлять их без изменения самой таблицы. В некоторых схемах такой список может содержать тысячи элементов, что захламляет определение базовой таблицы. Этот подход также позволяет скрывать столбцы, которые вы не хотите показывать пользователю.
Grafana требует, чтобы таблица псевдонимов имела следующую структуру столбцов:
Вот как можно воспроизвести поведение столбца ALIAS с помощью таблицы псевдонимов:
Затем мы можем настроить эту таблицу для использования в Grafana. Обратите внимание, что имя может быть любым, его можно даже задать в отдельной базе данных:

Теперь Grafana будет видеть результаты таблицы-псевдонима вместо результатов DESC example_table:

Оба варианта псевдонимов можно использовать для выполнения сложных преобразований типов или извлечения полей из JSON.
Все параметры YAML
Ниже перечислены все параметры конфигурации YAML, доступные в этом плагине. Для некоторых полей приведены примеры значений, для других указаны только их типы.
См. документацию Grafana для получения дополнительной информации об автоматическом создании (provisioning) источников данных с помощью YAML.