Настройка источника данных PostgreSQL
В этом документе объясняется, как настроить источник данных PostgreSQL, и перечислены все параметры конфигурации. Общую информацию об управлении источниками данных см. в разделе Управление источниками данных.
Перед началом
-
Для настройки источника данных вам нужна роль
Organization administrator. Вы также можете настроить его через YAML с помощью провижининга Grafana или используя Terraform. -
Grafana поставляется с предустановленным источником данных PostgreSQL в OSS и Enterprise. Вам не нужно устанавливать плагин. О вариантах обновления см. Обновления плагина.
-
Подготовьте данные безопасности PostgreSQL (сертификаты и клиентские ключи, если используется TLS/SSL).
-
Запишите вашу версию PostgreSQL; она будет запрошена во время настройки.
Note
При добавлении источника данных указанный вами пользователь базы данных должен иметь только разрешения
SELECTна соответствующих схемах и таблицах. Grafana не проверяет безопасность запросов, поэтому пользователи могут выполнить потенциально опасный SQL (например,DROP TABLE). Создайте выделенного пользователя PostgreSQL с ограниченными разрешениями, чтобы снизить риск.
Пример:
CREATE USER grafanareader WITH PASSWORD 'password';
GRANT USAGE ON SCHEMA schema TO grafanareader;
GRANT SELECT ON schema.table TO grafanareader;
Замените schema и table на имена вашей схемы и таблицы.
Добавление источника данных PostgreSQL
Выполните следующие шаги, чтобы настроить новый источник данных PostgreSQL:
- Нажмите Connections в меню слева.
- Нажмите Add new connection.
- Введите
PostgreSQLв строке поиска. - Выберите PostgreSQL data source.
- Нажмите Add new data source в правом верхнем углу.
Вы попадёте на вкладку Settings, где настраивается источник данных.
Параметры конфигурации PostgreSQL
Ниже приведён список параметров конфигурации PostgreSQL:
Раздел Connection:
Note
Пользователям Grafana Cloud: Grafana Cloud не может напрямую достичь базы данных на
localhost,127.0.0.1или в приватных диапазонах IP (10.x,172.16.x,192.168.x). Если ваш экземпляр PostgreSQL не является общедоступным, вы должны настроить Private data source connect (PDC), чтобы установить защищённый туннель между Grafana Cloud и вашей приватной сетью. Если вы сталкиваетесь с периодическими разрывами соединения с агентом PDC на базе Docker, попробуйте переключиться на агент на базе бинарного файла.Если ваша база данных общедоступна, но защищена брандмауэром, вы должны добавить исходящие IP-адреса Grafana Cloud в список разрешённых. Grafana Cloud не предоставляет статические IP-адреса для каждого стека. Он предоставляет только диапазоны IP уровня сервиса. Актуальный список исходящих IP-адресов см. в разделе Разрешение IP-адресов Grafana Cloud в брандмауэре.
Раздел Authentication:
Справочник по режимам TLS/SSL
Выбирайте режим TLS/SSL в зависимости от ваших требований безопасности и от того, где размещена ваша база данных:
Note
Большинство облачных сервисов PostgreSQL (Amazon RDS, Azure Database for PostgreSQL, Google Cloud SQL) требуют как минимум режима
require. Если вы оставите TLS/SSL Mode в значенииdisable, соединение может быть отклонено сервером. Проверьте документацию вашего облачного провайдера на предмет рекомендуемой настройкиsslmode.
TLS/SSL Auth Details:
Если вы выбрали режимы TLS/SSL Mode require, verify-ca или verify-full и file system path, требуются следующие параметры:
Если вы выбрали режим TLS/SSL Mode require и TLS/SSL Method certificate content, требуются следующие параметры:
Если вы выбрали режимы TLS/SSL Mode verify-ca или verify-full с TLS/SSL Method certificate content, требуются следующие параметры:
PostgreSQL Options:
Connection limits:
Эти настройки управляют тем, как Grafana управляет подключениями к вашему серверу PostgreSQL. Настраивайте эти значения, если вы разделяете базу данных с другими приложениями или используете программное обеспечение для пула подключений, такое как PgBouncer.
Private data source connect:
Нажмите Manage private data source connect, чтобы перейти на страницу вашего подключения PDC, где вы найдёте сведения о конфигурации PDC.
Secure SOCKS proxy:
Если в вашем экземпляре Grafana включена функция Secure SOCKS proxy, в настройках источника данных появляется переключатель. Когда он включён, Grafana маршрутизирует подключения PostgreSQL через SOCKS-прокси для защищённого доступа к базам данных в приватных сетях. Дополнительную информацию см. в разделе Настройка безопасного SOCKS5-прокси.
После добавления настроек подключения PostgreSQL нажмите Save & test, чтобы проверить и сохранить подключение источника данных.
Min time interval
Настройка Min time interval определяет нижнюю границу для переменных
$__interval и
$__interval_ms.
Эта опция также может быть настроена или переопределена на панели дашборда в настройках источника данных.
Это значение должно быть отформатировано как число, за которым следует допустимый идентификатор времени:
Провижининг источника данных
Вы можете определить и настроить источник данных в файлах YAML с помощью провижининга. Дополнительную информацию о провижининге и доступных параметрах конфигурации см. в разделе Провижининг Grafana.
ID плагина — grafana-postgresql-datasource. Примеры провижининга в этом документе используют type: postgres, который остаётся поддерживаемым псевдонимом.
Базовый пример провижининга
Следующий пример провижинит источник данных PostgreSQL с аутентификацией по паролю и отключённым SSL:
apiVersion: 1
datasources:
- name: Postgres
type: postgres
url: localhost:5432
user: grafana
secureJsonData:
password: 'Password!'
jsonData:
database: grafana
sslmode: 'disable' # disable/require/verify-ca/verify-full
maxOpenConns: 100
maxIdleConns: 100
maxIdleConnsAuto: true
connMaxLifetime: 14400
postgresVersion: 903 # 900=9.0 ... 906=9.6, 1000=10, 1100=11, 1200=12, 1300=13, 1400=14, 1500=15
timescaledb: false
Провижининг с TLS
Следующий пример провижинит источник данных PostgreSQL с режимом TLS verify-full, используя пути файловой системы для сертификатов:
apiVersion: 1
datasources:
- name: Postgres-TLS
type: postgres
url: db.example.com:5432
user: grafana
secureJsonData:
password: '<PASSWORD>'
jsonData:
database: grafana
sslmode: 'verify-full'
tlsConfigurationMethod: 'file-path'
sslRootCertFile: '/etc/grafana/certs/root.crt'
sslCertFile: '/etc/grafana/certs/client.crt'
sslKeyFile: '/etc/grafana/certs/client.key'
Замените <PASSWORD> на пароль вашей базы данных и обновите пути к сертификатам в соответствии с вашей средой.
Провижининг с TimescaleDB
Следующий пример включает поддержку TimescaleDB:
apiVersion: 1
datasources:
- name: Postgres-TimescaleDB
type: postgres
url: timescale.example.com:5432
user: grafana
secureJsonData:
password: '<PASSWORD>'
jsonData:
database: metrics
sslmode: 'require'
postgresVersion: 1000
timescaledb: true
Замените <PASSWORD> на пароль вашей базы данных.
Провижининг с Unix-сокетом
Следующий пример подключается через Unix-сокет вместо TCP:
apiVersion: 1
datasources:
- name: Postgres-Socket
type: postgres
url: /var/run/postgresql
user: grafana
secureJsonData:
password: '<PASSWORD>'
jsonData:
database: grafana
sslmode: 'disable'
Замените <PASSWORD> на пароль вашей базы данных. При использовании Unix-сокета задайте url равным пути к каталогу сокета. Не указывайте номер порта.
Провижининг с переменными среды
Вы можете использовать синтаксис $__env{} для ссылки на переменные среды в файлах провижининга. Это позволяет избежать хранения учётных данных в открытом тексте YAML:
apiVersion: 1
datasources:
- name: Postgres
type: postgres
url: $__env{PG_HOST}:$__env{PG_PORT}
user: $__env{PG_USER}
secureJsonData:
password: $__env{PG_PASSWORD}
jsonData:
database: $__env{PG_DATABASE}
sslmode: 'require'
Справочник по конфигурации провижининга
В следующей таблице перечислены все поля jsonData и secureJsonData, поддерживаемые при провижининге источника данных PostgreSQL:
Устранение проблем провижининга
Если вы сталкиваетесь с ошибками запросов метрик или другими проблемами при провижининге, обратитесь к разделу Ошибки провижининга в руководстве по устранению неполадок PostgreSQL.
Настройка с помощью Terraform
Вы можете настроить источник данных PostgreSQL с помощью Terraform и провайдера Grafana для Terraform.
Дополнительную информацию о провижининге ресурсов с помощью Terraform см. в разделе Grafana как код с использованием Terraform.
Пример Terraform
Следующий пример создаёт базовый источник данных PostgreSQL:
resource "grafana_data_source" "postgres" {
name = "Postgres"
type = "postgres"
url = "localhost:5432"
user = "grafana"
json_data_encoded = jsonencode({
database = "grafana"
sslmode = "disable"
maxOpenConns = 100
maxIdleConns = 100
maxIdleConnsAuto = true
connMaxLifetime = 14400
postgresVersion = 903
timescaledb = false
})
secure_json_data_encoded = jsonencode({
password = "Password!"
})
}
Все доступные параметры конфигурации см. в документации по ресурсу источника данных провайдера Grafana.
Дальнейшие шаги
После настройки источника данных PostgreSQL вы можете:
- Писать запросы с помощью редактора запросов для исследования и визуализации ваших данных.
- Использовать переменные шаблонов для создания динамических, многократно используемых дашбордов.
- Добавлять аннотации для наложения событий PostgreSQL на ваши панели.
- Настроить алертинг для создания правил алертинга на основе ваших данных PostgreSQL (только формат временных рядов).
- Устранять проблемы, если вы сталкиваетесь с проблемами с вашим источником данных.