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
idemouser
audit_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 , , DISCONNECT CHANGE 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_text
programu 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 , , ERROR RESULT (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_text
programu 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 UPDATE DELETE |
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