Dzienniki inspekcji w usłudze Azure Database for MariaDB

Ważne

Usługa Azure Database for MariaDB znajduje się na ścieżce wycofania. Zdecydowanie zalecamy przeprowadzenie migracji do usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MariaDB?.

W usłudze Azure Database for MariaDB 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 zagwarantować, że nie wpłynie to silnie na wydajność serwera.

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 mariaDB, 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 mariaDB, którzy mają zostać wykluczeni z rejestrowania. Zezwala na co najwyżej czterech użytkowników. Maksymalna długość parametru to 256 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

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 MariaDB, 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.

Schematy dzienników diagnostycznych

W poniższych sekcjach opisano dane wyjściowe dzienników inspekcji mariaDB 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.DBFORMARIADB
ResourceType Servers
ResourceId Adres URI zasobu
Resource Nazwa serwera
Category MySqlAuditLogs
OperationName LogEvent
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT
connection_id_d Unikatowy identyfikator połączenia wygenerowany przez bazę danych MariaDB
host_s Pusta
ip_s Adres IP klienta nawiązującego połączenie z bazą danych MariaDB
user_s Nazwa użytkownika wykonującego zapytanie
db_s Nazwa bazy danych połączonej z
\_ResourceId Adres 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.DBFORMARIADB
ResourceType Servers
ResourceId Adres URI zasobu
Resource Nazwa serwera
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nazwa serwera
event_class_s general_log
event_subclass_s LOG, , ERRORRESULT
event_time Znacznik czasu uruchamiania zapytania w sekundach system UNIX
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 MariaDB
user_s Nazwa użytkownika wykonującego zapytanie
sql_text_s Pełny tekst zapytania
\_ResourceId Adres 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 MariaDB 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