Подключение данных

Общий принцип: сетевая доступность

Прежде чем создавать подключение в интерфейсе DataLens, всегда задавайте себе один вопрос: «Может ли сервер, на котором работает DataLens, увидеть сервер с базой данных по сети?».

В 90% случаев проблемы с подключениями сводятся к сетевым ограничениям:

  • Firewall: блокирует порт на сервере с БД или на сетевом оборудовании.

  • Security Groups: в облачных средах правила группы безопасности не разрешают входящий трафик от ВМ с DataLens.

  • Неправильный хост или порт: банальная опечатка в реквизитах.

Как диагностировать проблемы

С пода control-api можно проверить доступность с помощью curl или telnet:

# Подключитесь к поду control-api
        ./init.sh --kubectl exec -it <имя-пода-control-api> -- /bin/bash
        
        # Проверьте доступность хоста и порта
        curl -v telnet://my-postgres-db.internal:5432
        

Проверяйте логи для пода — там будет информация про Connection timeout. Для этого можно использовать такую команду:

 ./init.sh --stern --tail 100 --no-follow pod/<имя-пода-control-api>
        

Создание простого подключения

Это базовый сценарий. Пользователь с ролью Editor или Admin может создать подключение.

image

  1. В интерфейсе DataLens перейдите в раздел Подключения и нажмите Создать подключение.

  2. Выберите тип источника, например PostgreSQL.

  3. Заполните поля: имя хоста, порт, имя БД, имя пользователя и пароль.

  4. Нажмите Проверить подключение. Если проверка прошла успешно, сохраняйте.

Пароли и токены, которые вы вводите в поля, шифруются с помощью ключа CONTROL_API_CRYPTO_KEY — одного из двух типов ключей в DataLens. Используется для шифрования чувствительных данных в полях подключений: паролей или токенов. Он также генерируется и сохраняется автоматически.

Подключение к БД с TLS-шифрованием

Для безопасной передачи данных в корпоративной среде часто используется TLS. Если база данных использует сертификат, подписанный внутренним центром сертификации (CA), DataLens по умолчанию не будет ему доверять.

Чтобы это исправить, нужно добавить корневой сертификат (CA) в хранилище доверенных сертификатов DataLens. Этот процесс выполняется на уровне конфигурации Kubernetes и требует обновления values.yaml для добавления CA в системный trust store.

Примечание

Это задача администратора, а не пользователя.

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

Настройка и использование файловых подключений

Для работы с файлами нужно включить функцию files в values.yaml.

Процесс для пользователя:

  1. Создает подключение типа Файл.

  2. Загружает CSV- или XLS-файл.

  3. Файл попадает во внутреннее хранилище S3 (MinIO), а затем его содержимое загружается в ClickHouse.

  4. DataLens создает датасет поверх этой таблицы в ClickHouse.

Примечание

Задача администратора — убедиться, что все компоненты (S3, ClickHouse, Valkey) работают и для них достаточно места.

Особенности коннекторов

JSON API

Позволяет подключаться к источникам данных, которые отдают данные в формате JSON по HTTP. Используется в связке с Chart Editor для быстрого создания чартов из программных источников.

Примечание

Подробнее про использование API-коннектора можно прочитать в документации.

Trino (ранее PrestoSQL)

Это не база данных, а федеративный движок запросов. Trino позволяет выполнять единый SQL-запрос к данным, которые физически лежат в разных системах, например объединять данные из PostgreSQL и S3 в одном запросе. DataLens подключается к Trino, а тот — к конечным источникам.

Примечание

Подробнее про использование Trino-коннектора можно прочитать в документации.

Кейс

Пользователь жалуется, что не может подключиться к Greenplum. Ошибка Connection timed out. Каким будет первый шаг в диагностике проблемы?

  • Перезапустить под control-api
  • Проверить пароль пользователя
  • Проверить сетевую доступность от пода control-api до хоста и порта Greenplum
  • Попросить пользователя проверить его SQL-запрос
Узнать ответ
  • Перезапустить под data-api

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

  • Проверить пароль пользователя

    Неверный пароль дает ошибку Authentication failed, а не Connection timed out.

  • Проверить сетевую доступность от пода data-api до хоста и порта Greenplum

    Верно. Connection timed out — классический симптом сетевой проблемы (firewall, security group).

  • Попросить пользователя проверить его SQL-запрос

    На этапе создания подключения SQL-запросов еще нет. Проблема на более низком уровне.

Практика: создание файлового подключения

  1. Убедитесь, что в вашем values.yaml включена функция files:
features:
          files:
            enabled: true
        

Если нет, включите и примените конфигурацию: ./init.sh --values <ваш_файл>.yaml.

  1. Создайте на локальном компьютере простой CSV-файл с именем sales.csv:
City,Sales
        Moscow,1500
        Paris,1200
        London,1800
        
  1. В интерфейсе DataLens создайте новое подключение типа Файл.

  2. Загрузите файл sales.csv. Дождитесь окончания обработки.

  3. После успешной загрузки вы увидите предпросмотр данных. Нажмите Создать в правом верхнем углу.

Итоги

Вы разобрали одну из самых частых задач администратора — обеспечение подключения к данным. Теперь вы умеете создавать простые и файловые подключения и понимаете, как подходить к настройке TLS.