Nachverfolgen der Datenbankaktivität mit Überwachungsprotokollen in Azure Database for MySQL – Flexible Server
GILT FÜR: Azure Database for MySQL – Flexibler Server
Azure Database for MySQL – Flexibler Server bietet Benutzern die Möglichkeit, Überwachungsprotokolle zu konfigurieren. Überwachungsprotokolle können dazu verwendet werden, die Aktivität auf Datenbankebene zu überwachen, einschließlich Verbindungs-, Administrator-, DDL- und DML-Ereignisse. Diese Arten von Protokollen werden häufig zu Compliancezwecken verwendet.
Konfigurieren der Überwachungsprotokollierung
Wichtig
Es wird empfohlen, nur die Ereignistypen und Benutzer zu protokollieren, die für Ihre Überwachungszwecke erforderlich sind, um sicherzustellen, dass die Leistung Ihres Servers nicht stark beeinträchtigt und gleichzeitig eine Mindestmenge an Daten erfasst wird.
Überwachungsprotokolle sind standardmäßig deaktiviert. Legen Sie den Serverparameter audit_log_enabled
auf ON (EIN) fest, um sie zu aktivieren. Diese Konfiguration kann über das Azure-Portal oder die Azure CLI erfolgen.
Sie können die folgenden anderen Parameter verwenden, um das Verhalten der Überwachungsprotokollierung zu konfigurieren:
audit_log_events
: steuert die zu protokollierenden Ereignisse. In der nachstehenden Tabelle finden Sie spezifische Überwachungsereignisse.audit_log_include_users
: MySQL-Benutzer, die zur Protokollierung einbezogen werden sollen. Der Standardwert für diesen Parameter ist leer, wodurch alle Benutzer zur Protokollierung einbezogen werden. Dies hat eine höhere Priorität alsaudit_log_exclude_users
. Die maximale Länge des Parameters ist 512 Zeichen. Beispielsweise schließt der Platzhalterwertdev*
alle Benutzer mit Einträgen ein, die mit dem Schlüsselwortdev
beginnen, wie z. B. „dev1,dev_user,dev_2“. Ein weiteres Beispiel für einen Platzhaltereintrag zum Einschließen von Benutzern ist*dev
, wobei alle Benutzer, die mit dem Wert „dev“ enden (z. B. „stage_dev,prod_dev,user_dev“), in den Überwachungsprotokolleinträgen eingeschlossen werden. Darüber hinaus ist die Verwendung eines Fragezeichens(?)
als Platzhalterzeichen in Mustern zulässig.audit_log_exclude_users
: MySQL-Benutzer, die aus der Protokollierung ausgeschlossen werden sollen. Die maximale Länge des Parameters beträgt 512 Zeichen. Platzhaltereinträge für Benutzer werden auch akzeptiert, um Benutzer in Überwachungsprotokollen auszuschließen. Beispielsweise schließt der Platzhalterwertstage*
alle Benutzer mit Einträgen aus, die mit dem Schlüsselwortstage
beginnen, wie z. B. „stage1,stage_user,stage_2“. Ein weiteres Beispiel für einen Platzhaltereintrag zum Ausschließen von Benutzern ist*com
, wobei alle Benutzer, die mit dem Wertcom
enden, aus den Überwachungsprotokolleinträgen ausgeschlossen werden. Darüber hinaus ist die Verwendung eines Fragezeichens(?)
als Platzhalterzeichen in Mustern zulässig.
Hinweis
audit_log_include_users
hat eine höhere Priorität als audit_log_exclude_users
. Wenn z. B. audit_log_include_users
= demouser
und audit_log_exclude_users
= demouser
einbezogen werden, wird der Benutzer in die Überwachungsprotokolle eingeschlossen, da audit_log_include_users
eine höhere Priorität hat.
Event | Beschreibung |
---|---|
CONNECTION |
– Initiierung der Verbindung : Beendigung der Verbindung |
CONNECTION_V2 |
– Initiierung der Verbindung (erfolgreich oder Fehlercode für nicht erfolgreich) : Beendigung der Verbindung |
DML_SELECT |
SELECT-Abfragen |
DML_NONSELECT |
INSERT/DELETE/UPDATE-Abfragen |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Abfragen wie DROP DATABASE |
DCL |
Abfragen wie GRANT PERMISSION |
ADMIN |
Abfragen wie SHOW STATUS |
GENERAL |
Alle in DML_SELECT, DML_NONSELECT, DML, DDL, DCL und ADMIN |
TABLE_ACCESS |
- Leseanweisungen für Tabelle, z. B. SELECT oder INSERT INTO... SELECT - Löschanweisungen für Tabelle, z. B. DELETE oder TRUNCATE TABLE - Einfügeanweisungen für Tabelle, z. B. INSERT oder REPLACE - Aktualisierungsanweisungen für Tabelle, z. B. UPDATE |
Zugreifen auf Überwachungsprotokolle
Überwachungsprotokolle sind mit den Diagnoseeinstellungen von Azure Monitor integriert. Nachdem Sie Überwachungsprotokolle auf Ihrem flexiblen Server aktiviert haben, können Sie sie an Azure Monitor-Protokolle, Azure Event Hubs oder Azure Storage senden. Weitere Informationen über Diagnoseeinstellungen finden Sie in der Dokumentation zu Diagnoseprotokollen. Weitere Informationen zum Aktivieren von Diagnoseeinstellungen im Azure-Portal finden Sie im Artikel zum Portal für Überwachungsprotokolle.
Hinweis
Storage Premium-Konten werden nicht unterstützt, wenn Sie die Protokolle über Diagnosen und Einstellungen an Azure Storage senden.
In den folgenden Abschnitten wird beschrieben, was von MySQL-Überwachungsprotokollen basierend auf dem Ereignistyp ausgegeben wird. Je nach Ausgabemethode können die enthaltenen Felder und ihre Reihenfolge variieren.
Verbindung
Eigenschaft | Beschreibung |
---|---|
TenantId |
Ihre Mandanten-ID |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC |
Type |
Typ des Protokolls Immer AzureDiagnostics |
SubscriptionId |
GUID für das Abonnement, zu dem der Server gehört |
ResourceGroup |
Name der Ressourcengruppe, zu der der Server gehört |
ResourceProvider |
Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Ressourcen-URI |
Resource |
Name des Servers in Großbuchstaben |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Name des Servers |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER |
connection_id_d |
Von MySQL generierte eindeutige Verbindungs-ID |
host_s |
Leer |
ip_s |
IP-Adresse des Clients, der die Verbindung mit MySQL herstellt |
user_s |
Name des Benutzers, der die Abfrage ausführt |
db_s |
Name der Datenbank, mit der die Verbindung besteht |
\_ResourceId |
Ressourcen-URI |
status_d |
Fehlercode-Eintrag der Verbindung für das CONNECTIONS_V2-Ereignis. |
Allgemein
Das unten angegebene Schema gilt für die Ereignistypen GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL und ADMIN.
Hinweis
Bei sql_text_s
wird das Protokoll abgeschnitten, wenn es länger als 2.048 Zeichen ist.
Eigenschaft | Beschreibung |
---|---|
TenantId |
Ihre Mandanten-ID |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC |
Type |
Typ des Protokolls Immer AzureDiagnostics |
SubscriptionId |
GUID für das Abonnement, zu dem der Server gehört |
ResourceGroup |
Name der Ressourcengruppe, zu der der Server gehört |
ResourceProvider |
Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Ressourcen-URI |
Resource |
Name des Servers in Großbuchstaben |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Name des Servers |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR , RESULT (nur für MySQL 5.6 verfügbar) |
event_time |
Startzeit der Abfrage im UTC-Zeitstempel |
error_code_d |
Fehlercode bei fehlerhafter Abfrage. 0 bedeutet, dass kein Fehler vorliegt |
thread_id_d |
ID des Threads, der die Abfrage ausgeführt hat |
host_s |
Leer |
ip_s |
IP-Adresse des Clients, der die Verbindung mit MySQL herstellt |
user_s |
Name des Benutzers, der die Abfrage ausführt |
sql_text_s |
Vollständiger Abfragetext |
\_ResourceId |
Ressourcen-URI |
Tabellenzugriff
Hinweis
Bei sql_text_s
wird das Protokoll abgeschnitten, wenn es länger als 2.048 Zeichen ist.
Eigenschaft | Beschreibung |
---|---|
TenantId |
Ihre Mandanten-ID |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC |
Type |
Typ des Protokolls Immer AzureDiagnostics |
SubscriptionId |
GUID für das Abonnement, zu dem der Server gehört |
ResourceGroup |
Name der Ressourcengruppe, zu der der Server gehört |
ResourceProvider |
Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Ressourcen-URI |
Resource |
Name des Servers in Großbuchstaben |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Name des Servers |
event_class_s |
table_access_log |
event_subclass_s |
READ , INSERT , UPDATE oder DELETE |
connection_id_d |
Von MySQL generierte eindeutige Verbindungs-ID |
db_s |
Name der Datenbank, auf die zugegriffen wird |
table_s |
Name der Tabelle, auf die zugegriffen wird |
sql_text_s |
Vollständiger Abfragetext |
\_ResourceId |
Ressourcen-URI |
Analysieren von Protokollen in Azure Monitor-Protokollen
Sobald Ihre Überwachungsprotokolle über Diagnoseprotokolle an Azure Monitor-Protokolle weitergeleitet wurden, können Sie weitere Analysen Ihrer überwachten Ereignisse durchführen. Im Folgenden finden Sie einige Beispielabfragen, die Ihnen beim Einstieg helfen. Stellen Sie sicher, dass Sie die Abfragen unten mit Ihrem Servernamen aktualisieren.
Auflisten von allgemeinen (GENERAL) Ereignissen auf einem bestimmten Server
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
Auflisten von CONNECTION_V2-Ereignissen auf einem bestimmten Server. Die Spalte
status_d
kennzeichnet den Fehlercode der Clientverbindung, der in der Clientanwendung beim Herstellen der Verbindung ausgegeben wird.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
Auflisten von Verbindungsereignissen (CONNECTION) auf einem bestimmten 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
Zusammenfassen von überwachten Ereignissen auf einem bestimmten 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
Erstellen eines Diagramms der Verteilung von Überwachungsereignistypen auf einem bestimmten 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 Resource, bin(TimeGenerated, 5m) | render timechart
Auflisten von überwachten Ereignissen in allen Instanzen von Azure Database for MySQL – Flexibler Server mit aktivierten Diagnoseprotokollen für Überwachungsprotokolle
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
Nächste Schritte
- Erfahren Sie mehr über Protokolle für langsame Abfragen.
- Konfigurieren der Überwachung