---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - en/cookbook/connections
  - ru/cookbook/connections
  - href: ru/cookbook/connections.md
    type: text/markdown
    title: Markdown version
csp:
  - script-src:
      - https://mc.yandex.ru
    img-src:
      - https://mc.yandex.ru
    connect-src:
      - https://mc.yandex.ru
      - wss://mc.yandex.ru
    child-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-ancestors:
      - 'blob:'
      - https://mc.yandex.ru
canonical: ru/cookbook/connections.html
title: Подключение данных в DataLens On-premises
description: Из статьи вы узнаете, как подключать данные в DataLens On-premises.
vcsPath: ru/cookbook/connections.md
---

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

## Общий принцип: сетевая доступность {#network-access}

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

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

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

## Как диагностировать проблемы {#problems-identify}

С пода `control-api` можно проверить доступность с помощью `curl` или `telnet`. Также для этого можно использовать команду `./init.sh --kubectl get pods`.

```shell
# Подключитесь к поду control-api
./init.sh --kubectl exec -it <имя-пода-control-api> -- /bin/bash

# Проверьте доступность хоста и порта
curl -v telnet://my-postgres-db.internal:5432
```

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

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

## Создание простого подключения {#connection-create}

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


![image](../_assets/datalens/cookbook/create-connection.png)


1. В интерфейсе DataLens перейдите в раздел **Подключения** и нажмите **Создать подключение**.
1. Выберите тип источника, например **PostgreSQL**.
1. Заполните поля: имя хоста, порт, имя БД, имя пользователя и пароль.
1. Нажмите **Проверить подключение**. Если проверка прошла успешно, сохраняйте.

Чувствительные данные в полях подключений (пароли или токены) шифруются с помощью одного из двух типов ключей в DataLens — `CONTROL_API_CRYPTO_KEY`. Он генерируется и сохраняется автоматически.

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

{% note info %}

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

{% endnote %}

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

Чтобы это исправить, в самом подключении выберите опцию **TLS**, укажите нужные параметры: **Продвинутые настройки подключения** → **TLS = Вкл** и прикрепите сертификат в **CA Certificate**.


![image](../_assets/datalens/cookbook/connection-setup.png)


## Настройка и использование файловых подключений {#file-connection}

Для работы с файлами нужно включить функцию `files` в `values.yaml`. Процесс для пользователя:

1. Создает подключение типа **Файл**.
1. Загружает CSV- или XLS-файл.
1. Файл попадает во внутреннее хранилище S3 (MinIO), а затем его содержимое загружается в ClickHouse®.
1. DataLens создает датасет поверх этой таблицы в ClickHouse®.

{% note tip %}

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

{% endnote %}

## Особенности коннекторов {#special-connections}

### JSON API

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

Подробнее про использование API Connector можно прочитать в [документации](../charts/editor/quickstart/from-api-connector.md).

### Trino (ранее PrestoSQL)

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

Подробнее про подключение к Trino можно прочитать в [документации](../operations/connection/create-trino.md).

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

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

    ```yaml
    features:
    files:
        enabled: true
    ```

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

1. Создайте на локальном компьютере простой CSV-файл с именем `sales.csv`:

    ```plaintext
    City,Sales
    Moscow,1500
    Paris,1200
    London,1800
    ```

1. В интерфейсе DataLens создайте новое подключение типа **Файл**.

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

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

## Кейс

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

* Перезапустить под `data-api`.
* Проверить пароль пользователя.
* Проверить сетевую доступность от пода `data-api` до хоста и порта Greenplum®.
* Попросить пользователя проверить SQL-запрос.

{% cut "Узнать ответ" %}

* Перезапустить под `data-api`.

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

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

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

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

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

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

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

{% endcut %}

## Итоги {#results}

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