Habilitación de SQL Insights (versión preliminar)

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

En este artículo se describe cómo habilitar SQL Insights (versión preliminar) para supervisar las implementaciones de SQL. La supervisión se realiza desde una máquina virtual de Azure que establece una conexión con las implementaciones de SQL y usa vistas de administración dinámica para recopilar datos de supervisión. Puede controlar qué conjuntos de datos se recopilan y la frecuencia de recopilación mediante un perfil de supervisión.

Nota

Para habilitar SQL Insights (versión preliminar) mediante la creación del perfil de supervisión y la máquina virtual mediante una plantilla de Resource Manager, consulte Ejemplos de plantilla de Resource Manager para SQL Insights (versión preliminar).

Para aprender a habilitar SQL Insights (versión preliminar), también puede consultar este episodio de Data Exposed.

Creación de un área de trabajo de Log Analytics

SQL Insights almacena sus datos en una o varias áreas de trabajo de Log Analytics. Antes de poder habilitar SQL Insights, debe crear un área de trabajo o seleccionar una existente. Se puede usar una sola área de trabajo con varios perfiles de supervisión, pero el área de trabajo y los perfiles deben estar ubicados en la misma región de Azure. Para habilitar las características de SQL Insights y acceder a ellas, debe tener el rol de Colaborador de Log Analytics en el área de trabajo.

Creación de un usuario de supervisión

Necesita un usuario (inicio de sesión) en las implementaciones de SQL que desea supervisar. Siga los procedimientos que se indican a continuación para los diferentes tipos de implementaciones de SQL.

Las instrucciones siguientes cubren el proceso por tipo de implementación de SQL que puede supervisar. Para lograr esto con un script en varios recursos de SQL a la vez, consulte el archivo LÉAME y el script de ejemplo siguientes.

Azure SQL Database

Nota

SQL Insights (versión preliminar) no admite los siguientes escenarios de Azure SQL Database:

  • Grupos elásticos: no se pueden recopilar métricas para grupos elásticos. Asimismo, no se pueden recopilar métricas para bases de datos de grupos elásticos.
  • Niveles de servicio bajos: no se pueden recopilar métricas para bases de datos en los niveles de servicio Básico, S0 y S1

SQL Insights (versión preliminar) tiene compatibilidad limitada con los siguientes escenarios de Azure SQL Database:

  • Nivel sin servidor: se pueden recopilar métricas para base de datos que usan el nivel de proceso sin servidor. Sin embargo, el proceso de recopilación de métricas restablecerá el temporizador de retraso de pausa automática, lo que impide que la base de datos entre en un estado de pausa automática.

Conéctese a una base de datos de Azure SQL con SQL Server Management Studio, Editor de Power Query (versión preliminar) en Azure Portal o cualquier otra herramienta cliente SQL.

Ejecute el siguiente script para crear un usuario con los permisos necesarios. Reemplace user por un nombre de usuario y mystrongpassword por una contraseña segura.

CREATE USER [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW DATABASE STATE TO [user]; 
GO 

Screenshot of the Query Editor with a create telegraf user script.

Compruebe que se ha creado el usuario.

Screenshot of the Query Editor query window verifying the telegraf user script.

select name as username,
       create_date,
       modify_date,
       type_desc as type,
       authentication_type_desc as authentication_type
from sys.database_principals
where type not in ('A', 'G', 'R', 'X')
       and sid is not null
order by username

Instancia administrada de Azure SQL

Conéctese a su instancia de Azure SQL Managed Instance mediante SQL Server Management Studio o una herramienta similar y ejecute el siguiente script con el fin de crear el usuario de supervisión con los permisos necesarios. Reemplace user por un nombre de usuario y mystrongpassword por una contraseña segura.

USE master; 
GO 
CREATE LOGIN [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW SERVER STATE TO [user]; 
GO 
GRANT VIEW ANY DEFINITION TO [user]; 
GO 

SQL Server

Conéctese a SQL Server en la máquina virtual de Azure y use SQL Server Management Studio o una herramienta similar para ejecutar el siguiente script con el fin de crear el usuario de supervisión con los permisos necesarios. Reemplace user por un nombre de usuario y mystrongpassword por una contraseña segura.

USE master; 
GO 
CREATE LOGIN [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW SERVER STATE TO [user]; 
GO 
GRANT VIEW ANY DEFINITION TO [user]; 
GO

Compruebe que se ha creado el usuario.

select name as username,
       create_date,
       modify_date,
       type_desc as type
from sys.server_principals
where type not in ('A', 'G', 'R', 'X')
       and sid is not null
order by username

Creación de una máquina virtual de Azure

Tendrá que crear una o varias máquinas virtuales de Azure que se usarán para recopilar datos para supervisar SQL.

Nota

Los perfiles de supervisión especifican qué datos se van a recopilar de los diferentes tipos de SQL que desea supervisar. Cada máquina virtual de supervisión solo puede tener un perfil de supervisión asociado. Si necesita varios perfiles de supervisión, debe crear una máquina virtual para cada uno.

Requisitos para las máquinas virtuales de Azure

La máquina virtual de Azure tiene los siguientes requisitos:

  • Sistema operativo: Ubuntu 18.04 con la imagen de Azure Marketplace. No se admiten las imágenes personalizadas. A fin de obtener el mantenimiento de seguridad extendido (ESM) para esta versión de Ubuntu, se recomienda usar la imagen de marketplace Ubuntu Pro 18.04 LTS. Para más información, vea Soporte técnico para Linux y la tecnología de código abierto en Azure.
  • Tamaños recomendados de máquina virtual de Azure: Standard_B2s (2 CPU, 4 GiB de memoria)
  • Se implementa en cualquier región de Azure compatible con el agente de Azure Monitor y cumple todos los requisitos previos del agente de Azure Monitor.

Nota

El tamaño de máquina virtual Standard_B2s (2 CPU, 4 GiB) admitirá hasta 100 cadenas de conexión. No debe asignar más de 100 conexiones a una sola máquina virtual.

Según la configuración de red de los recursos de SQL, es posible que las máquinas virtuales deban colocarse en la misma red virtual que los recursos de SQL. De este modo, podrán establecer conexiones de red para recopilar datos de supervisión.

Configuración de la red

Cada tipo de SQL ofrece métodos para que la máquina virtual de supervisión tenga acceso de forma segura a SQL. En las secciones siguientes se tratan las opciones basadas en el tipo de implementación de SQL.

Azure SQL Database

SQL Insights admite el acceso a su instancia de Azure SQL Database a través de su punto de conexión público, así como de su red virtual.

Para el acceso a través del punto de conexión público, debe agregar una regla en la página Configuración de firewall y en la sección de configuración del firewall de IP. Para especificar el acceso desde una red virtual, puede establecer reglas de firewall de red virtual y establecer las etiquetas de servicio que necesita el agente de Azure Monitor. En este artículo se describen las diferencias entre estos dos tipos de reglas de firewall.

Screenshot of an Azure SQL Database page in the Azure portal. The Set server firewall button is highlighted.

Screenshot of an Azure SQL Database Firewall settings page in the Azure portal. Firewall settings.

Instancia administrada de Azure SQL

Si la máquina virtual de supervisión va a estar en la misma red virtual que los recursos de Instancia administrada de SQL Database, consulte Conexión dentro de la misma red virtual. Si la máquina virtual de supervisión va a estar en una red virtual diferente a la de los recursos de Instancia administrada de SQL Database, consulte Conexión dentro de una red virtual diferente.

SQL Server

Si la máquina virtual de supervisión está en la misma red virtual que los recursos de máquina virtual de SQL, consulte Conexión a SQL Server en una red virtual. Si la máquina virtual de supervisión va a estar en una red virtual diferente de la de los recursos de máquina virtual de SQL, consulte Conexión a SQL Server a través de Internet.

Almacenamiento de la contraseña de supervisión en Azure Key Vault

Como procedimiento recomendado de seguridad, se aconseja almacenar las contraseñas de usuario (inicio de sesión) de SQL en una instancia de Key Vault, en lugar de escribirlas directamente en las cadenas de conexión del perfil de supervisión.

Cuando configure el perfil para la supervisión de SQL, necesitará uno de los siguientes permisos en el recurso de Key Vault que va a usar:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.Authorization/roleAssignments/delete

Si tiene estos permisos, se creará automáticamente una nueva directiva de acceso de Key Vault como parte de la creación del perfil de SQL Monitoring que usa el almacén de claves especificado.

Importante

Debe asegurarse de que la configuración de red y seguridad permite que la máquina virtual de supervisión acceda a Key Vault. Para más información, consulte Acceso de Azure Key Vault desde detrás de un firewall y Configuración de las redes de Azure Key Vault.

Creación de un perfil de SQL Monitoring

Para abrir SQL Insights (versión preliminar), seleccione SQL (preview) [SQL (versión preliminar)], en la sección Insights del menú de Azure Monitor en Azure Portal. Seleccione Crear nuevo perfil.

Screenshot of the Azure Monitor page in Azure portal. The create new profile button is highlighted.

El perfil almacenará la información que desea recopilar de los sistemas SQL. Tiene una configuración específica para:

  • Azure SQL Database
  • Instancia administrada de Azure SQL
  • SQL Server que se ejecuta en máquinas virtuales

Por ejemplo, puede crear un perfil denominado SQL Production y otro llamado SQL Staging con diferentes configuraciones para la frecuencia de recopilación de datos, los datos que se van a recopilar y el área de trabajo a la que se van a enviar los datos.

El perfil se almacena como un recurso de la regla de recopilación de datos en la suscripción y el grupo de recursos que seleccione. Cada perfil necesita lo siguiente:

  • Name (Nombre). No se puede editar una vez creado.
  • Ubicación. Es una región de Azure.
  • Área de trabajo de Log Analytics en la que se van a almacenar los datos de supervisión.
  • Opciones de recopilación relacionadas con la frecuencia y el tipo de datos de SQL Monitoring que se van a recopilar.

Nota

La ubicación del perfil debe ser la misma ubicación que la del área de trabajo de Log Analytics a la que se van a enviar los datos de supervisión.

A screenshot of the Create new profile details page in the Azure portal.

Seleccione Crear perfil de supervisión una vez que haya especificado los detalles del perfil de supervisión. Puede que el perfil tarde hasta un minuto en implementarse. Si no ve el nuevo perfil que aparece en el cuadro combinado Perfil de supervisión, seleccione el botón actualizar y debería aparecer una vez completada la implementación. Una vez que haya seleccionado el nuevo perfil, seleccione la pestaña Administrar perfil para agregar una máquina de supervisión que se asociará con el perfil.

Incorporación de máquina de supervisión

Seleccione Agregar máquina de supervisión para abrir un panel contextual Add monitoring virtual machine y elegir la máquina virtual desde la que supervisar las instancias de SQL y proporcionar las cadenas de conexión.

Seleccione la suscripción y el nombre de la máquina virtual de supervisión. Si usa Key Vault para almacenar contraseñas para los inicios de sesión de supervisión (se recomienda encarecidamente), seleccione la suscripción de ese almacén de claves en Key vault subscriptions y, después, seleccione el almacén de claves que almacena los secretos en KeyVault. En el campo Connection strings, escriba el URI del almacén y el nombre del secreto para cada contraseña que se usará en los cadena de conexión.

Por ejemplo, si el URI de Key Vault es https://mykeyvault.vault.azure.net/ y los nombres de secreto son sqlPassword1 y sqlPassword2, el código JSON del campo Connection strings contendrá lo siguiente:

{
   "secrets": {
      "telegrafPassword1": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword1"
      },
      "telegrafPassword2": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword2"
      }
   }
}

Ahora puede hacer referencia a estos secretos más adelante en el campo Connection strings. En el ejemplo siguiente, los dos cadenas de conexión hacen referencia a los secretos telegrafPassword1 y telegrafPassword2 definidos anteriormente:

{
   "sqlAzureConnections": [
      "Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword1;"
   ],
   "sqlVmConnections": [
      "Server=mysqlserver1;Port=1433;Database=master;User Id=telegraf;Password=$telegrafPassword2;"
   ]
}

A screenshot of the Azure portal Add monitoring virtual machine page. Choose the VM, specify the KV url (if used) and the secret name. Enter connection strings for each system to monitor. Choose the KV where you created the secret used in the connection strings.

Consulte la sección siguiente para más información sobre cómo identificar la cadena de conexión para las diferentes implementaciones de SQL.

Incorporación de cadenas de conexión

La cadena de conexión especifica el nombre de inicio de sesión que SQL Insights (versión preliminar) debe usar al iniciar sesión en SQL para recopilar datos de supervisión. Si utiliza una instancia de Key Vault para almacenar la contraseña del usuario de supervisión, proporcione el URI de Key Vault y el nombre del secreto que se va a usar.

Las cadenas de conexión varían según el tipo de recurso de SQL:

Azure SQL Database

Los firewalls o grupos de seguridad de red (NSG) que puedan existir en la ruta de acceso de red deben permitir las conexiones TCP desde la máquina de supervisión a la dirección IP y el puerto usados por la base de datos. Para obtener más información sobre las direcciones IP y los puertos, consulte Arquitectura de conectividad de Azure SQL Database.

Especifique la cadena de conexión de esta forma:

"sqlAzureConnections": [
   "Server=mysqlserver1.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;",
   "Server=mysqlserver2.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;"
]

Obtenga los detalles de la página Cadenas de conexión y el punto de conexión ADO.NET adecuado para la base de datos.

Para supervisar una réplica secundaria legible, anexe ;ApplicationIntent=ReadOnly a la cadena de conexión. SQL Insights admite la supervisión de una única réplica secundaria. Los datos recopilados se etiquetarán para reflejar la réplica principal o secundaria.

Instancia administrada de Azure SQL

Los firewalls o grupos de seguridad de red (NSG) que puedan existir en la ruta de acceso de red deben permitir las conexiones TCP desde la máquina de supervisión a la dirección IP y el puerto usados por la instancia administrada. Para obtener más información sobre las direcciones IP y los puertos, consulte Tipos de conexión de Azure SQL Managed Instance.

Especifique la cadena de conexión de esta forma:

"sqlManagedInstanceConnections": [
   "Server= mysqlserver1.<dns_zone>.database.windows.net;Port=1433;User Id=$username;Password=$password;",
   "Server= mysqlserver2.<dns_zone>.database.windows.net;Port=1433;User Id=$username;Password=$password;" 
] 

Obtenga los detalles de la página Cadenas de conexión y el punto de conexión ADO.NET adecuado para la instancia administrada. Si usa un punto de conexión público de instancia administrada, reemplace el puerto 1433 por el 3342.

Para supervisar una réplica secundaria legible, anexe ;ApplicationIntent=ReadOnly a la cadena de conexión. SQL Insights admite la supervisión de una única réplica secundaria de alta disponibilidad (HA) para una base de datos principal determinada. Los datos recopilados se etiquetarán para reflejar la réplica principal o secundaria.

SQL Server

El protocolo TCP/IP debe estar habilitado para la instancia de SQL Server que desea supervisar. Los firewalls o grupos de seguridad de red (NSG) que puedan existir en la ruta de acceso de red deben permitir las conexiones TCP desde la máquina de supervisión a la dirección IP y el puerto usados por la instancia de SQL Server.

Si desea supervisar la instancia de SQL Server configurada para alta disponibilidad (mediante grupos de disponibilidad o instancias de clúster de conmutación por error), se recomienda supervisar cada instancia de SQL Server en el clúster individualmente en lugar de conectarse a través de un agente de escucha del grupo de disponibilidad o un nombre de clúster de conmutación por error. Esto garantiza que los datos de supervisión se recopilen independientemente del rol de la instancia actual (principal o secundario).

Especifique la cadena de conexión de esta forma:

"sqlVmConnections": [
   "Server=SQLServerInstanceIPAddress1;Port=1433;User Id=$username;Password=$password;",
   "Server=SQLServerInstanceIPAddress2;Port=1433;User Id=$username;Password=$password;"
] 

Use la dirección IP en la que escucha la instancia de SQL Server.

Si la instancia de SQL Server está configurada para escuchar en un puerto que no sea el predeterminado, reemplace ese número de puerto por el 1433 en la cadena de conexión. Si está utilizando SQL Server en Azure Virtual Machine, puede ver qué puerto utilizar en la página Seguridad del recurso.

A screenshot of the SQL virtual machine Security page in the Azure portal. The SQL virtual machine security page has a Security & networking section with a Port field.

Para cualquier instancia de SQL Server, puede determinar todas las direcciones IP y los puertos en los que escucha mediante la conexión a la instancia y la ejecución de la siguiente consulta T-SQL, siempre que haya al menos una conexión TCP a la instancia:

SELECT DISTINCT local_net_address, local_tcp_port
FROM sys.dm_exec_connections
WHERE net_transport = 'TCP'
      AND
      protocol_type = 'TSQL';

Se creó un perfil de supervisión

Seleccione Add monitoring virtual machine (Agregar máquina virtual de supervisión) para configurar la máquina virtual que recopilará datos de los recursos de SQL. No vuelva a la pestaña Información general. En unos instantes, la columna Estado cambiará al estado "En recopilación" y debería ver los datos de los recursos de SQL que ha elegido supervisar.

Si no ve los datos, consulte Solución de problemas de SQL Insights (versión preliminar) para identificar el problema.

A screenshot of the Azure portal page for Azure Monitor for SQL. In the Insights menu, SQL is selected. A profile is shown to have been created.

Nota:

Si necesita actualizar el perfil de supervisión o las cadenas de conexión de las máquinas virtuales de supervisión, puede hacerlo a través de la pestaña Administrar perfil de SQL Insights. Una vez guardadas las actualizaciones, los cambios se aplicarán en unos 5 minutos.

Pasos siguientes