Überwachungsprotokolle in Azure Database for MySQL

GILT FÜR:Azure Database for MySQL – Single Server

Wichtig

Azure Database for MySQL single server is on the retirement path. Es wird dringend empfohlen, ein Upgrade auf azure Database for MySQL flexiblen Server durchzufü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 als audit_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 - Verbinden ioninitiierung (erfolgreich oder erfolglos)
– Erneute Authentifizierung des Benutzers mit unterschiedlichen Benutzer-/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 - Verfügbar für MySQL 5.7 und MySQL 8.0
- Tabellenleseanweisungen wie SELECT oder INSERT INTO ... AUSWÄHLEN
- Tabellenlöschanweisungen, z. B. DELETE oder TRUNCATE TABLE
- Tabelleneinfügungsanweisungen, 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
    

Nächste Schritte