Tenere traccia dell'attività del database con i log di controllo in Database di Azure per MySQL - Server flessibile
SI APPLICA A: Database di Azure per MySQL - Server flessibile
Database di Azure per MySQL server flessibile offre agli utenti la possibilità di configurare i log di controllo. I log di controllo possono essere usati per tenere traccia delle attività a livello di database, inclusi gli eventi di connessione, amministratore, DDL e DML. Questi tipi di log vengono comunemente usati per finalità di conformità.
Configurare la registrazione di controllo
Importante
È consigliabile registrare solo i tipi di evento e gli utenti necessari a scopo di controllo per garantire che le prestazioni del server non siano fortemente interessate e che venga raccolta una quantità minima di dati.
Per impostazione predefinita, i log di controllo sono disabilitati. Per abilitarle, impostare il parametro del audit_log_enabled
server su ON. Questa operazione può essere configurata usando il portale di Azure o l'interfaccia della riga di comando di Azure.
Altri parametri che è possibile modificare per controllare il comportamento della registrazione di controllo includono:
audit_log_events
: controlla gli eventi da registrare. Vedere la tabella seguente per gli eventi di controllo specifici.audit_log_include_users
: utenti di MySQL da includere per la registrazione. Il valore predefinito per questo parametro è vuoto, che includerà tutti gli utenti per la registrazione. Ha una priorità più elevata diaudit_log_exclude_users
. La lunghezza massima del parametro è di 512 caratteri Ad esempio, il valore con caratteri jolly didev*
include tutti gli utenti con voci che iniziano con la parola chiavedev
"dev1,dev_user,dev_2". Un altro esempio per la voce con caratteri jolly per l'inclusione dell'utente è*dev
in questo esempio, tutti gli utenti che terminano con il valore "dev" come "stage_dev,prod_dev,user_dev" sono inclusi nelle voci del log di controllo. Inoltre, l'uso di un punto(?)
interrogativo come carattere jolly è consentito nei modelli.audit_log_exclude_users
: utenti di MySQL da escludere dalla registrazione. La lunghezza massima del parametro è di 512 caratteri. Le voci con caratteri jolly per l'utente vengono accettate anche per escludere gli utenti nei log di controllo. Ad esempio, il valore con caratteri jolly distage*
esclude tutti gli utenti con voci che iniziano con la parola chiavestage
"stage1, stage_user,stage_2". Un altro esempio per la voce con caratteri jolly per l'esclusione dell'utente è*com
in questo esempio, tutti gli utenti che terminano con valorecom
verranno esclusi dalle voci del log di controllo. Inoltre, l'uso di un punto(?)
interrogativo come carattere jolly è consentito nei modelli.
Nota
audit_log_include_users
ha una priorità più elevata di audit_log_exclude_users
. Ad esempio, stante audit_log_include_users
= demouser
e audit_log_exclude_users
= demouser
, l'utente verrà incluso nei log di controllo perché audit_log_include_users
ha una priorità più elevata.
Evento | Descrizione |
---|---|
CONNECTION |
- Avvio della connessione - Terminazione della connessione |
CONNECTION_V2 |
- Avvio della connessione (codice di errore riuscito o non riuscito) - Terminazione della connessione |
DML_SELECT |
Query SELECT |
DML_NONSELECT |
Query INSERT/DELETE/UPDATE |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Query come "DROP DATABASE" |
DCL |
Query come "GRANT PERMISSION" |
ADMIN |
Query come "SHOW STATUS" |
GENERAL |
Tutti in DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN |
TABLE_ACCESS |
- Istruzioni di lettura tabella, ad esempio SELECT o INSERT INTO ... SELEZIONARE - Istruzioni delete di tabella, ad esempio DELETE o TRUNCATE TABLE - Istruzioni insert di tabella, ad esempio INSERT o REPLACE - Istruzioni di aggiornamento tabelle, ad esempio UPDATE |
Accedere ai log di controllo
I log di controllo sono integrati con le impostazioni di diagnostica di Monitoraggio di Azure. Dopo aver abilitato i log di controllo nel server flessibile, è possibile generarli nei log di Monitoraggio di Azure, Hub eventi di Azure o Archiviazione di Azure. Per altre informazioni sulle impostazioni di diagnostica, vedere la documentazione dei log di diagnostica. Per altre informazioni su come abilitare le impostazioni di diagnostica nella portale di Azure, vedere l'articolo relativo al portale dei log di controllo.
Nota
Archiviazione Premium account non sono supportati se si inviano i log all'archiviazione di Azure tramite diagnostica e impostazioni.
Le sezioni seguenti descrivono l'output dei log di controllo mySQL in base al tipo di evento. A seconda del metodo di output, è possibile che i campi inclusi e il relativo ordine di visualizzazione siano differenti.
Connessione
Proprietà | Descrizione |
---|---|
TenantId |
ID del tenant. |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Timestamp in cui il log è stato registrato in formato UTC. |
Type |
Tipo di log. Sempre AzureDiagnostics |
SubscriptionId |
GUID per la sottoscrizione a cui appartiene il server. |
ResourceGroup |
Nome del gruppo di risorse a cui appartiene il server. |
ResourceProvider |
Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI risorsa |
Resource |
Nome del server in lettere maiuscole |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nome del server |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER |
connection_id_d |
ID connessione univoco generato da MySQL |
host_s |
Spazio vuoto |
ip_s |
Indirizzo IP del client che si connette a MySQL |
user_s |
Nome dell'utente che esegue la query |
db_s |
Nome del database connesso a |
\_ResourceId |
URI risorsa |
status_d |
Voce di codice errore di connessione per CONNECTIONS_V2 evento. |
Generali
Lo schema seguente si applica ai tipi di evento GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN.
Nota
Per sql_text_s
, il log verrà troncato se supera i 2048 caratteri.
Proprietà | Descrizione |
---|---|
TenantId |
ID del tenant. |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Timestamp in cui il log è stato registrato in formato UTC. |
Type |
Tipo di log. Sempre AzureDiagnostics |
SubscriptionId |
GUID per la sottoscrizione a cui appartiene il server. |
ResourceGroup |
Nome del gruppo di risorse a cui appartiene il server. |
ResourceProvider |
Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI risorsa |
Resource |
Nome del server in lettere maiuscole |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nome del server |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR , RESULT (disponibili solo per MySQL 5.6) |
event_time |
Ora di inizio query nel timestamp UTC |
error_code_d |
Codice di errore se la query non è riuscita. 0 indica che non sono presenti errori |
thread_id_d |
ID del thread che ha eseguito la query |
host_s |
Spazio vuoto |
ip_s |
Indirizzo IP del client che si connette a MySQL |
user_s |
Nome dell'utente che esegue la query |
sql_text_s |
Testo completo della query |
\_ResourceId |
URI risorsa |
Accesso alla tabella
Nota
Per sql_text_s
, il log verrà troncato se supera i 2048 caratteri.
Proprietà | Descrizione |
---|---|
TenantId |
ID del tenant. |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Timestamp in cui il log è stato registrato in formato UTC. |
Type |
Tipo di log. Sempre AzureDiagnostics |
SubscriptionId |
GUID per la sottoscrizione a cui appartiene il server. |
ResourceGroup |
Nome del gruppo di risorse a cui appartiene il server. |
ResourceProvider |
Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI risorsa |
Resource |
Nome del server in lettere maiuscole |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nome del server |
event_class_s |
table_access_log |
event_subclass_s |
READ , INSERT , UPDATE o DELETE |
connection_id_d |
ID connessione univoco generato da MySQL |
db_s |
Nome del database a cui si ha accesso |
table_s |
Nome della tabella a cui si ha accesso |
sql_text_s |
Testo completo della query |
\_ResourceId |
URI risorsa |
Analizzare i log in Log di Monitoraggio di Azure
Dopo che i log di controllo vengono inviati tramite pipe ai log di Monitoraggio di Azure tramite i log di diagnostica, è possibile eseguire un'ulteriore analisi degli eventi controllati. Di seguito sono riportate alcune query di esempio che consentono di iniziare. Assicurarsi di aggiornare il codice seguente con il nome del server.
Elencare gli eventi GENERAL in un server specifico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_class_s == "general_log" | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Elencare CONNECTION_V2 eventi in un determinato server,
status_d
la colonna indica il codice di errore di connessione client affrontato dall'applicazione client durante la connessione.AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_subclass_s == "CONNECT" | project TimeGenerated, Resource, event_class_s, event_subclass_s, user_s, ip_s, status_d | order by TimeGenerated asc nulls last
Elencare gli eventi CONNECTION in un determinato server
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log" | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Riepilogare gli eventi controllati in un determinato server
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by event_class_s, event_subclass_s, user_s, ip_s
Creare un grafico della distribuzione del tipo di evento di controllo in un server specifico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by Resource, bin(TimeGenerated, 5m) | render timechart
Elencare gli eventi controllati in tutte le istanze del server flessibile Database di Azure per MySQL con i log di diagnostica abilitati per i log di controllo
AzureDiagnostics | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Passaggi successivi
- Altre informazioni sui log di query lente
- Configurare il controllo