Überwachungsprotokolle in Azure Database for MySQL
GILT FÜR: Azure-Datenbank für MySQL - Single Server
Wichtig
Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?
In Azure Database for MySQL ist das Überwachungsprotokoll für Benutzer verfügbar. Das Überwachungsprotokoll dient zum Nachverfolgen von Aktivitäten auf Datenbankebene und häufig zu Konformitätszwecken.
Konfigurieren der Überwachungsprotokollierung
Wichtig
Um die Serverleistung nicht zu stark zu beeinträchtigen, wird empfohlen, nur die für Ihre Überwachungszwecke wirklich erforderlichen Ereignistypen und Benutzer zu protokollieren. Eventuell ist zwischen erfassten Daten und Aufrechterhaltung der Serverleistung abzuwägen.
Das Überwachungsprotokoll ist standardmäßig deaktiviert. Um sie zu aktivieren, legen Sie audit_log_enabled
auf ON fest.
Weitere Parameter, die Sie anpassen können:
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.audit_log_exclude_users
: MySQL-Benutzer, die aus der Protokollierung ausgeschlossen werden sollen. Die maximale Länge des Parameters ist 512 Zeichen.
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 (erfolgreich oder nicht erfolgreich) : Erneute Authentifizierung des Benutzers mit anderem Benutzernamen/Kennwort während der Sitzung : 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 |
- nur für MySQL 5.7 und MySQL 8.0 verfügbar - 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 in Azure Monitor-Diagnoseprotokolle integriert. Nachdem Sie Überwachungsprotokolle auf Ihrem MySQL-Server aktiviert haben, können Sie sie an Azure Monitor-Protokolle, Event Hubs oder Azure Storage senden. Weitere Informationen zum Aktivieren von Diagnoseprotokollen 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.
Schemas für Diagnoseprotokolle
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 |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Name des Servers |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER (nur für MySQL 5.7 verfügbar) |
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 |
Allgemein
Das unten angegebene Schema gilt für die Ereignistypen GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL und ADMIN.
Hinweis
Bei sql_text
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 |
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
Tabellenzugriffsprotokolle werden nur für MySQL 5.7 ausgegeben.
Bei sql_text
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 |
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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' and event_class_s == "general_log" | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Auflisten von Verbindungsereignissen (CONNECTION) auf einem bestimmten Server
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log" | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Auflisten von überwachten Ereignissen auf allen MySQL-Servern mit aktivierten Diagnoseprotokollen für Überwachungsprotokolle
AzureDiagnostics | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last