Настройка источника данных Microsoft SQL Server
В этом документе приведены инструкции по настройке источника данных Microsoft SQL Server и описаны доступные параметры конфигурации. Общую информацию о добавлении источников данных и управлении ими см. в разделах Источники данных Grafana и Управление источниками данных.
Note
Эта страница описывает источник данных Microsoft SQL Server, который позволяет выполнять запросы к существующей базе данных SQL Server и визуализировать результаты в Grafana. Это отличается от интеграции Microsoft SQL Server (доступна в Grafana Cloud), которая использует Grafana Alloy для сбора метрик производительности о вашем экземпляре SQL Server (ЦП, память, соединения и тому подобное). Если вы хотите отслеживать состояние самого SQL Server, обратитесь к документации по интеграции.
Перед началом
Перед настройкой источника данных Microsoft SQL Server убедитесь, что у вас есть следующее:
-
Разрешения Grafana: для добавления и настройки источников данных у вас должна быть роль
Organization administrator. Пользователи с рольюEditorилиViewerне могут получить доступ к форме настройки источника данных, если им не предоставлены дополнительные разрешения через RBAC. Администраторы организации также могут настроить источник данных через YAML с помощью системы провижининга Grafana. -
Работающий экземпляр SQL Server: Microsoft SQL Server 2012 или новее, Azure SQL Database или Azure SQL Managed Instance.
-
Сетевой доступ: Grafana должна иметь возможность подключиться к вашему SQL Server. Порт по умолчанию —
1433. -
Учётные данные для аутентификации: в зависимости от выбранного способа аутентификации вам понадобится одно из следующего:
- Учётные данные для входа в SQL Server (имя пользователя и пароль).
- Учётные данные и конфигурация Windows/Kerberos (не поддерживается в Grafana Cloud).
- Регистрация приложения Azure Entra ID или управляемое удостоверение (managed identity).
-
Сертификаты безопасности: при использовании зашифрованных соединений соберите необходимые сертификаты TLS/SSL.
Note
Плагин источника данных Microsoft SQL Server предустановлен в Grafana, поэтому дополнительная установка не требуется. Начиная с Grafana 13.2 он поставляется как отдельный плагин, который обновляется независимо от выпусков Grafana. Подробности см. в разделе Обновления плагина.
Tip
Пользователи Grafana Cloud: если ваш SQL Server находится в частной сети, вы можете настроить Private data source connect для установления соединения.
Добавление источника данных MSSQL
Чтобы добавить источник данных MSSQL, выполните следующие шаги:
- Нажмите Connections в меню слева.
- Нажмите Add new connection
- Введите
Microsoft SQL Serverв строке поиска. - Выберите Microsoft SQL Server в разделе источников данных.
- Нажмите Add new data source в правом верхнем углу.
Grafana переведёт вас на вкладку Settings, где вы настроите параметры Microsoft SQL Server.
Настройка источника данных в UI
Ниже приведены параметры конфигурации источника данных Microsoft SQL Server.
Warning
Kerberos не поддерживается в Grafana Cloud.
Соединение:
Caution
Если вы добавляете
ApplicationIntent=ReadOnlyв поле Host, чтобы направлять запросы на реплику только для чтения, учтите, что реплики только для чтения могут быть значительно медленнее основной базы. Это может привести к загрузке дашборда в течение нескольких минут. ИспользуйтеApplicationIntent=ReadOnlyтолько если ваша реплика рассчитана на такую нагрузку запросов и вы протестировали производительность.
Шифрование TLS/SSL:
Параметр Encrypt определяет, будет ли согласовано защищённое соединение TLS/SSL с сервером и в какой степени.
Когда для Encrypt задано значение True, доступны следующие дополнительные параметры TLS:
Выбор правильной конфигурации шифрования:
Note
Если вы используете более старую версию Microsoft SQL Server, например 2008 или 2008R2, возможно, потребуется задать для Encrypt значение Disable или False, чтобы подключиться.
Caution
Сборки Grafana, использующие BoringCrypto (сборки, совместимые с FIPS), обеспечивают соблюдение требований к шифрам FIPS 140-3. Если ваш SQL Server поддерживает только старые наборы шифров (например, TLS 1.0 или шифры на основе RC4), соединения из экземпляра Grafana с включённым FIPS завершаются ошибкой согласования TLS. Обновите конфигурацию TLS вашего SQL Server, чтобы поддерживать TLS 1.2 с одобренными FIPS наборами шифров.
Аутентификация:
Note
Начиная с Grafana v13.0 пароли и имена пользователей, содержащие точки с запятой (
;) или закрывающие фигурные скобки (}), обрабатываются корректно. Если ранее вы сталкивались со сбоями подключения из-за специальных символов в учётных данных, обновитесь до Grafana v13.0 или более поздней версии.
Дополнительные параметры:
Дополнительные параметры — это необязательные настройки, которые вы задаёте для большего контроля над источником данных. К ним относятся ограничения соединений, тайм-аут соединения, интервал группировки по времени и Secure Socks Proxy.
Ограничения соединений:
Grafana поддерживает пул соединений для каждого настроенного источника данных MSSQL. Эти параметры управляют поведением пула и напрямую влияют на производительность, особенно при одновременной нагрузке от дашбордов и оповещений.
Caution
Если Max open задано слишком низким, параллельные панели дашборда и оценки правил оповещения конкурируют за соединения. Запросы оповещений могут завершаться ошибкой “failed to connect to server”, тогда как дашборды продолжают работать, поскольку оценки оповещений используют отдельный путь выполнения, который не может бесконечно ждать свободного соединения. Увеличьте Max open, если вы наблюдаете периодические сбои оповещений.
Детали соединения:
Дополнительные параметры Windows AD:
Note
Аутентификация Windows AD (Kerberos) доступна только для самостоятельно управляемых установок Grafana. Она не поддерживается в Grafana Cloud. Для развёртываний Grafana Cloud, подключающихся к SQL Server, используйте SQL Server Authentication или Azure Entra ID.
Требования к Kerberos SPN:
Для успешной аутентификации Kerberos для экземпляра SQL Server должен быть зарегистрирован Service Principal Name (SPN), соответствующий имени хоста, которое Grafana использует для подключения. Это особенно важно при подключении через Availability Group Listeners или DNS-алиасы.
Регистрируйте SPN с помощью команды setspn на хосте SQL Server:
setspn -S MSSQLSvc/<SQL_SERVER_FQDN>:1433 <DOMAIN>\<SERVICE_ACCOUNT>
setspn -S MSSQLSvc/<SQL_SERVER_FQDN> <DOMAIN>\<SERVICE_ACCOUNT>
Если Grafana подключается через Listener или алиас, зарегистрируйте дополнительный SPN для этого имени. Проверьте зарегистрированные SPN с помощью setspn -L <DOMAIN>\<SERVICE_ACCOUNT>.
Подключение к локальному SQL Server из Grafana Cloud
Если ваш экземпляр SQL Server находится в частной сети (локально, VPN или VPC), Grafana Cloud не может подключиться к нему напрямую через интернет. Вы должны использовать Private data source connect (PDC) для создания защищённого туннеля между вашим стеком Grafana Cloud и частной сетью.
Note
PDC требуется для любого SQL Server, который недоступен публично из интернета. Одного добавления в список разрешённых брандмауэра недостаточно, потому что Grafana Cloud не использует статические IP-адреса для соединений с источниками данных.
Сетевые требования:
- Порт 22 (SSH): агент PDC в вашей сети должен иметь возможность подключиться к конечной точке PDC Grafana Cloud через порт 22 для SSH-туннеля.
- Порт 1433 (SQL Server): агент PDC должен иметь возможность подключиться к вашему экземпляру SQL Server через порт 1433 (или ваш пользовательский порт SQL Server).
- Разрешение DNS: агент PDC должен иметь возможность разрешить имя хоста SQL Server из вашей частной сети.
Настройка PDC для Microsoft SQL Server:
- В вашем стеке Grafana Cloud перейдите в Connections > Private data source connect.
- Создайте новое соединение PDC или используйте существующее.
- Установите и настройте агент PDC на хосте в вашей частной сети, имеющем доступ к экземпляру SQL Server. Подробные инструкции см. в разделе Configure Grafana private data source connect (PDC).
- Вернитесь к настройке источника данных Microsoft SQL Server.
- В разделе Private data source connect выберите ваше соединение PDC из выпадающего списка.
- Введите имя хоста SQL Server так, как оно разрешается из вашей частной сети (не публичное DNS-имя).
- Нажмите Save & test, чтобы проверить соединение.
Нажмите Manage private data source connect, чтобы открыть страницу соединения PDC и просмотреть детали вашей конфигурации.
Дополнительную информацию о PDC см. в разделе Private data source connect (PDC).
Caution
Если ранее вы подключались с помощью самостоятельно управляемого экземпляра Grafana и переходите на Grafana Cloud, необходимо настроить PDC, прежде чем ваш частный SQL Server станет доступен. Способы прямого сетевого доступа, работавшие с самостоятельно управляемой Grafana (пиринг VPN, частные конечные точки), не применяются к Grafana Cloud.
После настройки параметров источника данных MSSQL нажмите Save & test внизу, чтобы проверить соединение. Вы должны увидеть диалоговое окно с подтверждением:
Database Connection OK
Аутентификация Azure Entra ID (ранее Azure AD)
Поддерживаются следующие методы аутентификации Azure:
- App Registration (service principal)
- Managed Identity
- Аутентификация Current User
- Azure Entra Password
Azure SQL Server, к которому вы подключаетесь, должен поддерживать аутентификацию Azure Entra. Детали настройки см. в документации Azure SQL.
Требуемая конфигурация сервера
Прежде чем использовать любой метод аутентификации Azure Entra ID, необходимо включить аутентификацию Azure в конфигурации сервера Grafana. Добавьте следующее в ваш файл grafana.ini или custom.ini:
[azure]
azure_auth_enabled = true
В зависимости от выбранного метода требуются дополнительные флаги (описаны в каждом разделе ниже). После изменения файла .ini перезапустите сервер Grafana, чтобы изменения вступили в силу.
Аутентификация Current User
Это рекомендуемый механизм аутентификации при работе с экземплярами SQL Server, размещёнными в Azure. Он позволяет пользователям аутентифицироваться и выполнять запросы к базе данных, используя свои собственные учётные данные, а не долгоживущие учётные данные.
Этот метод аутентификации требует, чтобы ваш экземпляр Grafana был настроен для входа с аутентификацией Azure Entra ID (ранее Active Directory). При входе через Azure Entra ID этот метод можно использовать для пересылки учётных данных текущего вошедшего пользователя в источник данных. Затем учётные данные пользователя используются при запросе данных из источника данных. Подробности о настройке вашего экземпляра Grafana с помощью Azure Entra см. в документации.
Note
Требуется дополнительная настройка, чтобы App Registration, используемое для входа пользователя через Azure, предоставляло токен доступа с разрешениями, необходимыми источнику данных.
App Registration должна быть настроена для выдачи как Access Tokens, так и ID Tokens.
- На портале Azure откройте App Registration, требующую настройки.
- Выберите Authentication в боковом меню.
- В разделе Implicit grant and hybrid flows отметьте оба флажка: Access tokens и ID tokens.
- Сохраните изменения, чтобы App Registration обновилась.
App Registration также должна быть настроена с дополнительными API Permissions, чтобы предоставить аутентифицированным пользователям доступ к API, используемым источником данных.
- На портале Azure откройте App Registration, требующую настройки.
- Выберите API Permissions в боковом меню.
- Убедитесь, что разрешения
openid,profile,offline_accessприсутствуют в разделе Microsoft Graph. Если их нет, их необходимо добавить.- Выберите Add a permission и выберите следующие разрешения. Их необходимо добавлять по отдельности. Дополнительную информацию см. в документации Azure.
- Выберите APIs my organization uses > Найдите Azure SQL и выберите > Delegated permissions >
user_impersonation> Add permissionsПосле добавления всех разрешений необходимо обновить раздел аутентификации Azure в Grafana. Раздел
scopesдолжен быть обновлён, чтобы включить область.default, гарантируя, что Grafana запрашивает токен с доступом ко всем API, объявленным в App Registration. После обновления значение scopes должно быть равно:.default openid email profile.
Этот метод аутентификации не поддерживает по своей природе все серверные функции, поскольку учётные данные пользователя не будут в области видимости. К затронутым функциям относятся оповещения, отчёты и записанные запросы. Также обратите внимание, что кэширование запросов и ресурсов по умолчанию отключено для источников данных, использующих аутентификацию текущего пользователя.
Чтобы включить аутентификацию текущего пользователя для Grafana:
-
Установите флаг
user_identity_enabledв разделе[azure]конфигурации сервера Grafana.[azure] user_identity_enabled = true -
В настройке источника данных SQL Server задайте для Authentication значение Azure AD Authentication, а для типа аутентификации Azure — Current User.
App Registration
Используйте регистрацию приложения (service principal) для аутентификации источника данных с помощью client ID и секрета. Это рекомендуемый метод для автоматизированного, неинтерактивного доступа к Azure SQL.
Предварительные требования:
- Регистрация приложения, созданная в Azure Entra. Инструкции см. в документации Azure для service principals.
- Tenant ID, client (application) ID и client secret из регистрации приложения.
Шаг 1: добавьте регистрацию приложения как пользователя базы данных
-
Подключитесь к вашей базе данных Azure SQL как пользователь с административными разрешениями (пользователь должен иметь возможность читать ваш каталог Azure Entra, например, обладая ролью
Directory Readers). -
Выполните следующий SQL, чтобы создать пользователя для регистрации приложения:
CREATE USER [<APP_REGISTRATION_NAME>] FROM EXTERNAL PROVIDER; -
Предоставьте созданному пользователю соответствующие разрешения. Grafana рекомендует доступ только для чтения:
ALTER ROLE db_datareader ADD MEMBER [<APP_REGISTRATION_NAME>];
Шаг 2: настройте сервер Grafana
Убедитесь, что azure_auth_enabled задано в вашем grafana.ini:
[azure]
azure_auth_enabled = true
Шаг 3: настройте источник данных
- В настройке источника данных SQL Server задайте для Authentication значение Azure AD Authentication, а для типа аутентификации Azure — App Registration.
- Задайте для Azure Cloud значение Azure (для публичного облака Azure).
- Введите Directory (tenant) ID, Application (client) ID и Client Secret из вашей регистрации приложения.
Managed Identity
Note
Managed Identity доступна только в Azure Managed Grafana или в самостоятельно управляемой Grafana, развёрнутой в Azure. Она недоступна в Grafana Cloud.
Вы можете использовать управляемое удостоверение для настройки SQL Server в Grafana, если вы размещаете Grafana в Azure (например, в App Service или на виртуальных машинах Azure) и на вашей ВМ включено управляемое удостоверение. Это позволяет безопасно аутентифицировать источники данных без ручной настройки учётных данных. Подробности об управляемых удостоверениях Azure см. в документации Azure.
Чтобы включить управляемое удостоверение для Grafana:
-
Установите и
azure_auth_enabled, иmanaged_identity_enabledв разделе[azure]конфигурации сервера Grafana:[azure] azure_auth_enabled = true managed_identity_enabled = true -
В настройке источника данных SQL Server задайте для Authentication значение Azure AD Authentication, а для типа аутентификации Azure — Managed Identity.
При этом поля directory ID, application ID и client secret скрываются, а источник данных использует управляемое удостоверение для аутентификации в SQL Server.
-
При необходимости задайте
managed_identity_client_idв разделе[azure], чтобы использовать управляемое удостоверение, назначаемое пользователем, вместо системного удостоверения по умолчанию.
Убедитесь, что управляемое удостоверение добавлено в ваш экземпляр Azure SQL как пользователь.
Azure Entra Password
Warning
Azure Entra Password не является рекомендуемым механизмом аутентификации, так как требует настройки с использованием пароля отдельного пользователя. Рассмотрите альтернативный метод аутентификации, например аутентификацию текущего пользователя или регистрацию приложения.
Вы можете подключиться к базе данных Azure SQL, используя имя пользователя и пароль пользователя, имеющего разрешения в нужной базе данных. Это также требует настройки регистрации приложения с доступом к базе данных.
Чтобы включить Azure Entra password для Grafana:
-
Установите флаг
azure_entra_password_credentials_enabledв разделе[azure]конфигурации сервера Grafana.[azure] azure_entra_password_credentials_enabled = true -
В настройке источника данных SQL Server задайте для Authentication значение Azure AD Authentication, а для типа аутентификации Azure — Azure Entra Password.
-
Задайте для User ID значение имени пользователя в базе данных Azure SQL.
-
Задайте для Application Client ID значение client ID регистрации приложения, добавленной в базу данных Azure SQL.
-
Задайте для Password значение пароля пользователя в базе данных Azure SQL.
Min time interval
Параметр Min time interval задаёт нижний предел для переменных
$__interval и
$__interval_ms.
Это значение должно быть отформатировано как число, за которым следует допустимый идентификатор времени:
Grafana рекомендует задавать это значение в соответствии с частотой записи вашего Microsoft SQL Server.
Например, используйте 1m, если Microsoft SQL Server записывает данные каждую минуту.
Вы также можете переопределить этот параметр в панели дашборда в её параметрах источника данных.
Разрешения пользователя базы данных
При добавлении источника данных убедитесь, что указанный пользователь базы данных имеет только разрешения SELECT на соответствующей базе данных и таблицах. Grafana не проверяет безопасность запросов, а это значит, что они могут включать потенциально опасные SQL-инструкции, такие как USE otherdb; или DROP TABLE user;, которые могут быть выполнены. Чтобы минимизировать этот риск, Grafana настоятельно рекомендует создать выделенного пользователя MSSQL с ограниченными разрешениями.
CREATE USER grafanareader WITH PASSWORD 'password'
GRANT SELECT ON dbo.YourTable3 TO grafanareader
Также убедитесь, что пользователь не имеет нежелательных привилегий от роли public.
Диагностика проблем с подключением
Если вы используете более старые версии Microsoft SQL Server, например 2008 и 2008R2, возможно, потребуется отключить шифрование, прежде чем вы сможете подключить источник данных.
Grafana рекомендует использовать последний доступный пакет обновления для оптимальной совместимости.
Провижининг источника данных
Вы можете определять и настраивать источник данных в файлах YAML в рамках системы провижининга Grafana. Дополнительную информацию о провижининге и о доступных параметрах конфигурации см. в разделе Provision Grafana.
Пример
apiVersion: 1
datasources:
- name: MSSQL
type: mssql
url: localhost:1433
user: grafana
jsonData:
database: grafana
maxOpenConns: 100
maxIdleConns: 100
maxIdleConnsAuto: true
connMaxLifetime: 14400
connectionTimeout: 0
encrypt: 'false'
secureJsonData:
password: 'Password!'
Настройка с помощью Terraform
Вы можете настроить источник данных Microsoft SQL Server с помощью Terraform и провайдера Grafana для Terraform.
Дополнительную информацию о провижининге ресурсов с помощью Terraform см. в документации Grafana as code using Terraform.
Пример Terraform
Следующий пример создаёт базовый источник данных Microsoft SQL Server:
resource "grafana_data_source" "mssql" {
name = "MSSQL"
type = "mssql"
url = "localhost:1433"
user = "grafana"
json_data_encoded = jsonencode({
database = "grafana"
maxOpenConns = 100
maxIdleConns = 100
maxIdleConnsAuto = true
connMaxLifetime = 14400
connectionTimeout = 0
encrypt = "false"
})
secure_json_data_encoded = jsonencode({
password = "Password!"
})
}
Все доступные параметры конфигурации см. в документации по ресурсу источника данных провайдера Grafana.
Дальнейшие шаги
После настройки источника данных Microsoft SQL Server вы можете:
- Писать запросы с помощью редактора запросов, чтобы исследовать и визуализировать данные
- Создавать переменные шаблонов для построения динамических, переиспользуемых дашбордов
- Добавлять аннотации, чтобы накладывать события SQL Server на графики
- Настроить оповещения для создания правил оповещения на основе данных SQL Server
- Устранять проблемы, если вы столкнётесь с проблемами с источником данных