Abilitare SQL Insights (anteprima)

Si applica a:Database SQL di AzureIstanza gestita di SQL di Azure

Questo articolo descrive come abilitare SQL Insights (anteprima) per monitorare le distribuzioni SQL. Il monitoraggio viene eseguito da una macchina virtuale di Azure che stabilisce una connessione alle distribuzioni SQL e usa delle DMV (Dynamic Management Views) per raccogliere dati di monitoraggio. È possibile controllare quali set di dati vengono raccolti e la frequenza di raccolta usando un profilo di monitoraggio.

Nota

Per abilitare SQL Insights (anteprima) creando il profilo di monitoraggio e la macchina virtuale usando un modello di Resource Manager, vedere Esempi di modelli di Resource Manager per Informazioni dettagliate su SQL (anteprima).

Per informazioni su come abilitare SQL Insights (anteprima), è anche possibile fare riferimento a questo episodio esposto ai dati.

Creare un'area di lavoro Log Analytics

SQL Insights archivia i dati in una o più aree di lavoro Log Analytics. Prima di abilitare SQL Insights, è necessario creare un'area di lavoro o selezionare una esistente. Una singola area di lavoro può essere usata con più profili di monitoraggio, ma l'area di lavoro e i profili devono trovarsi nella stessa area di Azure. Per abilitare e accedere alle funzionalità di SQL Insights, è necessario avere il ruolo Collaboratore in analisi dei log nell’area di lavoro.

Creare l’utente di monitoraggio

È necessario un utente (account di accesso) nelle distribuzioni SQL da monitorare. Seguire le procedure seguenti per diversi tipi di distribuzioni SQL.

Le istruzioni seguenti illustrano il processo per tipo di SQL che è possibile monitorare. Per eseguire questa operazione con uno script in più risorse SQL contemporaneamente, vedere il seguente file README e uno script di esempio.

Database SQL di Microsoft Azure

Nota

SQL Insights (anteprima) non supporta gli scenari di database SQL di Azure seguenti:

  • Pool elastici: non è possibile raccogliere le metriche per i pool elastici. Non è possibile raccogliere le metriche per i database all'interno di pool elastici.
  • Livelli di servizio bassi: le metriche non possono essere raccolte per i database negli oggetti assistenza Basic, S0 e S1

SQL Insights (anteprima) offre un supporto limitato per i seguenti scenari di database SQL di Azure:

  • Livello serverless: le metriche possono essere raccolte per i database usando il livello di calcolo serverless. Tuttavia, il processo di raccolta delle metriche reimposta il timer di ritardo di sospensione automatica, impedendo al database di entrare in uno stato di sospensione automatica.

Connessione a un database SQL di Azure con SQL Server Management Studio, Editor di query (anteprima) nel portale di Azure o in qualsiasi altro strumento client SQL.

Eseguire lo script seguente per creare un utente con le autorizzazioni necessarie. Sostituire l’utente con un nome utente e mystrongpassword con una password complessa.

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.

Verificare che l’utente sia stato creato.

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

Istanza gestita di SQL di Azure

Effettuare la connessione all'Istanza gestita di SQL di Azure usando SQL Server Management Studio o uno strumento simile ed eseguire lo script seguente per creare l'utente di monitoraggio con le autorizzazioni necessarie. Sostituire l’utente con un nome utente e mystrongpassword con una password complessa.

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

Eseguire la connessione a SQL Server nella macchina virtuale di Azure e usare SQL Server Management Studio o uno strumento simile per eseguire lo script seguente per creare l'utente di monitoraggio con le autorizzazioni necessarie. Sostituire l’utente con un nome utente e mystrongpassword con una password complessa.

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

Verificare che l’utente sia stato creato.

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

Creare una macchina virtuale di Azure

Sarà necessario creare una o più macchine virtuali di Azure che verranno usate per raccogliere dati per monitorare SQL.

Nota

I profili di monitoraggio specificano i dati raccolti dai diversi tipi di SQL da monitorare. A ogni macchina virtuale di monitoraggio può essere associato un solo profilo di monitoraggio. Se sono necessari più profili di monitoraggio, è necessario creare una macchina virtuale per ognuno.

Requisiti delle macchine virtuali di Azure

La macchina virtuale di Azure ha i seguenti requisiti:

  • Sistema operativo: Ubuntu 18.04 usando l'immagine di Azure Marketplace. Le immagini personalizzate non sono supportate. Per ottenere la manutenzione della sicurezza estesa (ESM) per questa versione di Ubuntu, è consigliabile usare l'immagine del marketplace Ubuntu Pro 18.04 LTS. Per altre informazioni, vedere Supporto per Linux e tecnologia open source in Azure.
  • Dimensioni minime consigliate per le macchine virtuali di Azure: Standard_B2s (2 CPU, 4-GiB di memoria)
  • Distribuito in qualsiasi area di Azure supportata dall'agente di Monitoraggio di Azure e soddisfa tutti i prerequisiti dell'agente di Monitoraggio di Azure.

Nota

Le dimensioni della macchina virtuale Standard_B2s (2 CPU, 4 GiB) supporteranno fino a 100 stringhe di connessione. Non è consigliabile allocare più di 100 connessioni a una singola macchina virtuale.

A seconda delle impostazioni di rete delle risorse SQL, potrebbe essere necessario inserire le macchine virtuali nella stessa rete virtuale delle risorse SQL in modo che possano stabilire connessioni di rete per raccogliere i dati di monitoraggio.

Configurare le impostazioni di rete

Ogni tipo di SQL offre metodi per la macchina virtuale di monitoraggio per accedere in modo sicuro a SQL. Le sezioni seguenti illustrano le opzioni in base al tipo di distribuzione SQL.

Database SQL di Microsoft Azure

SQL Insights supporta l'accesso alle database SQL di Azure tramite l'endpoint pubblico e dalla rete virtuale.

Per l'accesso tramite l'endpoint pubblico, è necessario aggiungere una regola nella pagina Impostazioni firewall e nella sezione Impostazioni firewall IP. Per specificare l'accesso da una rete virtuale, è possibile impostare le regole del firewall di rete virtuale e impostare i tag di servizio richiesti dall'agente di Monitoraggio di Azure. Questo articolo descrive le differenze tra questi due tipi di regole del 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.

Istanza gestita di SQL di Azure

Se la macchina virtuale di monitoraggio si troverà nella stessa rete virtuale delle risorse di istanza gestita di SQL, vedere Connessione all'interno della stessa rete virtuale. Se la macchina virtuale di monitoraggio si trova nella rete virtuale diversa rispetto alle risorse di istanza gestita di SQL, vedere Connessione all'interno di una rete virtuale diversa.

SQL Server

Se la macchina virtuale di monitoraggio si trova nella stessa rete virtuale delle risorse della macchina virtuale SQL, vedere Connessione a SQL Server all'interno di una rete virtuale. Se la macchina virtuale di monitoraggio si trova nella rete virtuale diversa rispetto alle risorse della macchina virtuale SQL, vedere Connessione a SQL Server tramite Internet.

Archiviare la password in Azure Key Vault

Come procedura consigliata per la sicurezza, è consigliabile archiviare le password dell'utente SQL (accesso) in un insieme di credenziali delle chiavi, anziché immetterle direttamente nel profilo di monitoraggio stringa di connessione.

Quando si configura il profilo per SQL Monitoring, è necessaria una delle autorizzazioni seguenti per la risorsa dell’insieme di credenziali delle chiavi che si intende usare:

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

Se si dispone di queste autorizzazioni, verrà creato automaticamente un nuovo criterio di accesso dell’insieme di credenziali delle chiavi durante la creazione del profilo di SQL Monitoring che usa l'insieme di credenziali delle chiavi specificato.

Importante

È necessario assicurarsi che la configurazione di rete e sicurezza consenta alla VM di monitoraggio di accedere all’nsieme di credenziali delle chiavi. Per altre informazioni, vedere Accedere ad Azure Key Vault dietro un firewall e Configurare le impostazioni di rete di Azure Key Vault.

Creare un profilo SQL Monitoring

Aprire SQL Insights (anteprima) selezionando SQL (anteprima) nella sezione Insights del menu Monitoraggio di Azure nel portale di Azure. Selezionare Crea nuovo profilo.

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

Il profilo archivierà le informazioni che si desidera raccogliere dai sistemi SQL. Include impostazioni specifiche per:

  • database SQL di Azure
  • Istanza gestita di SQL di Azure
  • SQL Server in esecuzione su macchine virtuali

Ad esempio, è possibile creare un profilo denominato SQL Production e un altro denominato SQL Staging con impostazioni diverse per la frequenza di raccolta di dati, i dati da raccogliere e l'area di lavoro a cui inviare i dati.

Il profilo viene archiviato come risorsa regola di raccolta dati nella sottoscrizione e nel gruppo di risorse selezionato. Ogni profilo richiede quanto segue:

  • Nome. Non è possibile modificarlo dopo averlo creato.
  • Posizione. Si tratta di un'area di Azure.
  • Area di lavoro Log Analytics per archiviare tutti i dati dal monitoraggio.
  • Impostazioni di raccolta per la frequenza e il tipo di dati di SQL Monitoring da raccogliere.

Nota

Il percorso del profilo deve trovarsi nella stessa posizione dell'area di lavoro Log Analytics a cui si prevede di inviare i dati di monitoraggio.

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

Selezionare Crea profilo di monitoraggio dopo aver immesso i dettagli per il profilo di monitoraggio. La distribuzione del profilo potrebbe richiedere fino a un minuto. Se non viene visualizzato il nuovo profilo elencato nella casella combinata Profilo di monitoraggio, selezionare il pulsante Aggiorna e dovrebbe essere visualizzato al termine della distribuzione. Dopo aver selezionato il nuovo profilo, selezionare la scheda Gestisci profilo per aggiungere un computer di monitoraggio che verrà associato al profilo.

Aggiungere un computer di monitoraggio

Selezionare Aggiungi computer di monitoraggio per aprire un pannello Add monitoring virtual machine di contesto per scegliere la macchina virtuale da cui monitorare le istanze SQL e fornire le stringa di connessione.

Selezionare la sottoscrizione e il nome della macchina virtuale di monitoraggio. Se si usa l’insieme di credenziali delle chiavi per archiviare le password per gli account di accesso di monitoraggio (scelta consigliata), selezionare la sottoscrizione di tale insieme di credenziali delle chiavi in Key vault subscriptions e quindi selezionare l'insieme di credenziali delle chiavi in cui sono archiviati i segreti in KeyVault. Nel campo Connection strings, immettere l'URI dell'insieme di credenziali e il nome del segreto per ogni password da usare nelle stringhe di connessione.

Ad esempio, se l'URI dell'insieme di credenziali delle chiavi è https://mykeyvault.vault.azure.net/ e i nomi dei segreti sono sqlPassword1 e sqlPassword2, il codice JSON nel campo Connection strings conterrà quanto segue:

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

È ora possibile fare riferimento a questi segreti ulteriormente nel campo Connection strings. Nell'esempio seguente le due stringhe di connessione fanno riferimento ai segreti telegrafPassword1 e telegrafPassword2 definiti in precedenza:

{
   "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.

Per informazioni dettagliate sull'identificazione dei stringa di connessione per distribuzioni SQL diverse, vedere la sezione successiva.

Aggiungere stringhe di connessione

La stringa di connessione specifica il nome di accesso che SQL Insights (anteprima) deve usare per l'accesso a SQL per raccogliere i dati di monitoraggio. Se si usa un insieme di credenziali delle chiavi per archiviare la password per l'utente di monitoraggio, specificare l'URI dell'insieme di credenziali delle chiavi e il nome del segreto che contiene la password.

La stringa di connessione varia per ogni tipo di risorsa SQL:

Database SQL di Microsoft Azure

Le connessioni TCP dal computer di monitoraggio all'indirizzo IP e alla porta usate dal database devono essere consentite da qualsiasi firewall o gruppi di sicurezza di rete (NSG) che potrebbero esistere nel percorso di rete. Per informazioni dettagliate su indirizzi IP e porte, vedere architettura di connettività database SQL di Azure.

Immettere la stringa di connessione nel modulo:

"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;"
]

Ottenere i dettagli dalla pagina delle Stringhe di connessione e dall'endpoint ADO.NET appropriato per il database.

Per monitorare una replica secondaria leggibile, aggiungere ;ApplicationIntent=ReadOnly alla stringa di connessione. SQL Insights supporta il monitoraggio di un singolo database secondario. I dati raccolti verranno contrassegnati per riflettere i dati primari o secondari.

Istanza gestita di SQL di Azure

Le connessioni TCP dal computer di monitoraggio all'indirizzo IP e alla porta usate dall'istanza gestita devono essere consentite da qualsiasi firewall o gruppi di sicurezza di rete (NSG) che potrebbero esistere nel percorso di rete. Per informazioni dettagliate su indirizzi IP e porte, vedere Istanza gestita di SQL di Azure tipi di connessione.

Immettere la stringa di connessione nel modulo:

"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;" 
] 

Ottenere i dettagli dalla pagina delle Stringhe di connessione e dall'endpoint ADO.NET appropriato per l'istanza gestita. Se si usa l'endpoint pubblico dell'istanza gestita, sostituire la porta 1433 con 3342.

Per monitorare una replica secondaria leggibile, aggiungere ;ApplicationIntent=ReadOnly alla stringa di connessione. SQL Insights supporta il monitoraggio di una singola replica secondaria a disponibilità elevata per un determinato database primario. I dati raccolti verranno contrassegnati per riflettere primario o secondario.

SQL Server

Il protocollo TCP/IP deve essere abilitato per l'istanza di SQL Server da monitorare. Le connessioni TCP dal computer di monitoraggio all'indirizzo IP e alla porta usate dall'istanza di SQL Server devono essere consentite da qualsiasi firewall o gruppi di sicurezza di rete (NSG) che potrebbero esistere nel percorso di rete.

Se si vuole monitorare SQL Server configurato per la disponibilità elevata (usando gruppi di disponibilità o istanze del cluster di failover), è consigliabile monitorare ogni istanza di SQL Server nel cluster singolarmente anziché connettersi tramite un listener del gruppo di disponibilità o un nome del cluster di failover. In questo modo si garantisce che i dati di monitoraggio vengano raccolti indipendentemente dal ruolo dell'istanza corrente (primario o secondario).

Immettere la stringa di connessione nel modulo:

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

Usare l'indirizzo IP su cui l'istanza di SQL Server è in ascolto.

Se l'istanza di SQL Server è configurata per l'ascolto su una porta non predefinita, sostituire 1433 con tale numero di porta nel stringa di connessione. Se si usa SQL Server nella macchina virtuale di Azure, è possibile visualizzare la porta da usare nella pagina Sicurezza per la risorsa.

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.

Per qualsiasi istanza di SQL Server, è possibile determinare tutti gli indirizzi IP e le porte su cui è in ascolto connettendosi all'istanza ed eseguendo la query T-SQL seguente, purché all'istanza sia presente almeno una connessione TCP:

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

Profilo di monitoraggio creato

Selezionare Aggiungi macchina virtuale di monitoraggio per configurare la macchina virtuale per raccogliere dati dalle risorse SQL. Non tornare alla scheda Panoramica. In pochi minuti, la colonna Stato dovrebbe cambiare in modo da leggere "Raccolta", verranno visualizzati i dati per le risorse SQL che si è scelto di monitorare.

Se i dati non vengono visualizzati, vedere Risoluzione dei problemi di SQL Insights (anteprima) per identificare il 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

Se è necessario aggiornare il profilo di monitoraggio o le stringhe di connessione nelle VM di monitoraggio, è possibile farlo tramite la scheda SQL Insights (anteprima) Gestisci profilo. Dopo aver salvato gli aggiornamenti, le modifiche verranno applicate in circa 5 minuti.

Passaggi successivi