Dzienniki inspekcji w usłudze Azure Database for MySQL

DOTYCZY: Azure Database for MySQL — pojedynczy serwer

Ważne

Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?

W usłudze Azure Database for MySQL dziennik inspekcji jest dostępny dla użytkowników. Dziennik inspekcji może służyć do śledzenia aktywności na poziomie bazy danych i jest często używany do zapewnienia zgodności.

Konfigurowanie rejestrowania inspekcji

Ważne

Zaleca się rejestrowanie tylko typów zdarzeń i użytkowników wymaganych do celów inspekcji, aby upewnić się, że wydajność serwera nie ma znacznego wpływu, a minimalna ilość danych jest zbierana.

Domyślnie dziennik inspekcji jest wyłączony. Aby ją włączyć, ustaw wartość audit_log_enabled WŁ.

Inne parametry, które można dostosować, obejmują:

  • audit_log_events: steruje zdarzeniami, które mają być rejestrowane. Zobacz poniższą tabelę, aby zapoznać się z konkretnymi zdarzeniami inspekcji.
  • audit_log_include_users: użytkownicy programu MySQL, którzy mają być dołączani do rejestrowania. Wartość domyślna tego parametru jest pusta, która będzie zawierać wszystkich użytkowników do rejestrowania. Ma to wyższy priorytet niż audit_log_exclude_users. Maksymalna długość parametru to 512 znaków.
  • audit_log_exclude_users: użytkownicy mySQL, którzy mają zostać wykluczeni z rejestrowania. Maksymalna długość parametru to 512 znaków.

Uwaga

audit_log_include_users ma wyższy priorytet niż audit_log_exclude_users. Na przykład jeśli audit_log_include_users = demouser idemouseraudit_log_exclude_users = , użytkownik zostanie uwzględniony w dziennikach inspekcji, ponieważ audit_log_include_users ma wyższy priorytet.

Zdarzenie Opis
CONNECTION - inicjowanie Połączenie ion (pomyślne lub nieudane)
— Ponowne uwierzytelnianie użytkownika przy użyciu innego użytkownika/hasła podczas sesji
- zakończenie Połączenie ion
DML_SELECT Zapytania SELECT
DML_NONSELECT ZAPYTANIA INSERT/DELETE/UPDATE
DML DML = DML_SELECT + DML_NONSELECT
DDL Zapytania takie jak "DROP DATABASE"
DCL Zapytania takie jak "UDZIEL UPRAWNIENIA"
ADMIN Zapytania takie jak "SHOW STATUS"
GENERAL Wszystkie w DML_SELECT, DML_NONSELECT, DML, DDL, DCL i ADMIN
TABLE_ACCESS — Dostępne dla programów MySQL 5.7 i MySQL 8.0
- Instrukcje odczytu tabeli, takie jak SELECT lub INSERT INTO ... WYBIERZ
- Instrukcje usuwania tabeli, takie jak DELETE lub TRUNCATE TABLE
- Instrukcje wstawiania tabeli, takie jak INSERT lub REPLACE
- Instrukcje aktualizacji tabeli, takie jak UPDATE

Uzyskiwanie dostępu do dzienników inspekcji

Dzienniki inspekcji są zintegrowane z dziennikami diagnostycznymi usługi Azure Monitor. Gdy włączysz dzienniki inspekcji na serwerze MySQL, możesz je emitować do dzienników usługi Azure Monitor, Event Hubs i Azure Storage. Aby dowiedzieć się więcej na temat włączania dzienników diagnostycznych w witrynie Azure Portal, zobacz artykuł w portalu dziennika inspekcji.

Uwaga

Konta usługi Premium Storage nie są obsługiwane, jeśli wysyłasz dzienniki do usługi Azure Storage za pośrednictwem diagnostyki i ustawień

Schematy dzienników diagnostycznych

W poniższych sekcjach opisano dane wyjściowe dzienników inspekcji mySQL na podstawie typu zdarzenia. W zależności od metody wyjściowej uwzględnione pola i kolejność ich wyświetlania mogą się różnić.

Connection

Właściwości Opis
TenantId Identyfikator dzierżawy
SourceSystem Azure
TimeGenerated [UTC] Sygnatura czasowa zarejestrowania dziennika w formacie UTC
Type Typ dziennika. Zawsze AzureDiagnostics
SubscriptionId Identyfikator GUID subskrypcji, do którego należy serwer
ResourceGroup Nazwa grupy zasobów, do którego należy serwer
ResourceProvider Nazwa dostawcy zasobów. Zawsze MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Identyfikator URI zasobu
Resource Nazwa serwera
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nazwa serwera
event_class_s connection_log
event_subclass_s CONNECT, , DISCONNECTCHANGE USER (dostępne tylko dla programu MySQL 5.7)
connection_id_d Unikatowy identyfikator połączenia wygenerowany przez program MySQL
host_s Pusta
ip_s Adres IP klienta nawiązującego połączenie z bazą danych MySQL
user_s Nazwa użytkownika wykonującego zapytanie
db_s Nazwa bazy danych połączonej z
\_ResourceId Identyfikator URI zasobu

Ogólne

Poniższy schemat dotyczy typów zdarzeń OGÓLNE, DML_SELECT, DML_NONSELECT, DML, DDL, DCL i ADMIN.

Uwaga

W przypadku sql_textprogramu dziennik zostanie obcięty, jeśli przekroczy 2048 znaków.

Właściwości Opis
TenantId Identyfikator dzierżawy
SourceSystem Azure
TimeGenerated [UTC] Sygnatura czasowa zarejestrowania dziennika w formacie UTC
Type Typ dziennika. Zawsze AzureDiagnostics
SubscriptionId Identyfikator GUID subskrypcji, do którego należy serwer
ResourceGroup Nazwa grupy zasobów, do którego należy serwer
ResourceProvider Nazwa dostawcy zasobów. Zawsze MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Identyfikator URI zasobu
Resource Nazwa serwera
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nazwa serwera
event_class_s general_log
event_subclass_s LOG, , ERRORRESULT (dostępne tylko dla programu MySQL 5.6)
event_time Czas rozpoczęcia zapytania w znaczniku czasu UTC
error_code_d Kod błędu, jeśli zapytanie nie powiodło się. 0 oznacza brak błędu
thread_id_d Identyfikator wątku, który wykonał zapytanie
host_s Pusta
ip_s Adres IP klienta nawiązującego połączenie z bazą danych MySQL
user_s Nazwa użytkownika wykonującego zapytanie
sql_text_s Pełny tekst zapytania
\_ResourceId Identyfikator URI zasobu

Dostęp do tabel

Uwaga

Dzienniki dostępu do tabel są danymi wyjściowymi tylko dla programu MySQL 5.7.
W przypadku sql_textprogramu dziennik zostanie obcięty, jeśli przekroczy 2048 znaków.

Właściwości Opis
TenantId Identyfikator dzierżawy
SourceSystem Azure
TimeGenerated [UTC] Sygnatura czasowa zarejestrowania dziennika w formacie UTC
Type Typ dziennika. Zawsze AzureDiagnostics
SubscriptionId Identyfikator GUID subskrypcji, do którego należy serwer
ResourceGroup Nazwa grupy zasobów, do którego należy serwer
ResourceProvider Nazwa dostawcy zasobów. Zawsze MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Identyfikator URI zasobu
Resource Nazwa serwera
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nazwa serwera
event_class_s table_access_log
event_subclass_s READ, INSERT, lub UPDATEDELETE
connection_id_d Unikatowy identyfikator połączenia wygenerowany przez program MySQL
db_s Nazwa bazy danych, do których uzyskiwano dostęp
table_s Nazwa dostępnej tabeli
sql_text_s Pełny tekst zapytania
\_ResourceId Identyfikator URI zasobu

Analizowanie dzienników w dziennikach usługi Azure Monitor

Po potoku dzienników inspekcji do dzienników usługi Azure Monitor za pomocą dzienników diagnostycznych można przeprowadzić dalszą analizę zdarzeń inspekcji. Poniżej przedstawiono kilka przykładowych zapytań, które ułatwiają rozpoczęcie pracy. Pamiętaj o zaktualizowaniu poniższej nazwy serwera.

  • Wyświetlanie listy zdarzeń OGÓLNYCH na określonym serwerze

    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 
    
  • Wyświetlanie listy zdarzeń POŁĄCZENIA na określonym serwerze

    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
    
  • Podsumowywanie zdarzeń inspekcji na określonym serwerze

    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
    
  • Wykres dystrybucji typów zdarzeń inspekcji na określonym serwerze

    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 
    
  • Wyświetlanie listy zdarzeń inspekcji na wszystkich serwerach MySQL z włączonymi dziennikami diagnostycznymi dla dzienników inspekcji

    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
    

Następne kroki