MySQL için Azure Veritabanı - Esnek Sunucuda Denetim Günlükleri ile veritabanı etkinliğini izleme

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Esnek Sunucu

MySQL için Azure Veritabanı esnek sunucu, kullanıcılara denetim günlüklerini yapılandırma olanağı sağlar. Denetim günlükleri bağlantı, yönetici, DDL ve DML olayları gibi veritabanı düzeyinde etkinlikleri izlemek için kullanılabilir. Bu tür günlükler genellikle uyumluluk amacıyla kullanılır.

Denetim günlüğünü yapılandırma

Önemli

Sunucunuzun performansının büyük ölçüde etkilenmediğinden ve en az miktarda veri toplandığından emin olmak için yalnızca denetim amacıyla gereken olay türlerini ve kullanıcıları günlüğe kaydetmeniz önerilir.

Varsayılan olarak denetim günlükleri devre dışı bırakılır. Bunları etkinleştirmek için sunucu parametresini audit_log_enabledON olarak ayarlayın. Bu, Azure portalı veya Azure CLI kullanılarak yapılandırılabilir.

Denetim günlüğü davranışını denetlemek için ayarlayabileceğiniz diğer parametreler şunlardır:

  • audit_log_events: günlüğe kaydedilecek olayları denetler. Belirli denetim olayları için aşağıdaki tabloya bakın.
  • audit_log_include_users: Günlüğe kaydetmeye dahil edilecek MySQL kullanıcıları. Bu parametre için varsayılan değer boş, bu değer günlüğe kaydetmeye yönelik tüm kullanıcıları içerir. Bu, üzerinde audit_log_exclude_usersdaha yüksek önceliğe sahiptir. Parametrenin en fazla uzunluğu 512 karakterdir. Örneğin joker karakter değeri dev* , "dev1,dev_user,dev_2" gibi anahtar sözcükle dev başlayan girişleri olan tüm kullanıcıları içerir. Kullanıcı eklemeye yönelik bir diğer joker karakter girişi örneği de *dev bu örnekte, "stage_dev,prod_dev,user_dev" gibi "dev" değeriyle biten tüm kullanıcıların denetim günlüğü girdilerine eklenmesidir. Ayrıca, soru işaretinin (?) joker karakter olarak kullanılmasına desenlerde izin verilir.
  • audit_log_exclude_users: MySQL kullanıcıları günlüğe kaydetmenin dışında tutulacak. Parametrenin Maksimum uzunluğu 512 karakterdir. Denetim günlüklerindeki kullanıcıları dışlamak için kullanıcı joker karakterleri de kabul edilir. Örneğin joker karakter değeri stage* , "stage1,stage_user,stage_2" gibi anahtar sözcükle stage başlayan girişleri olan tüm kullanıcıları dışlar. Kullanıcıyı dışlamak için joker karakter girişi için bir diğer örnek de *com bu örnekte değerle com biten tüm kullanıcıların denetim günlüğü girdilerinin dışında tutulmasıdır. Ayrıca, soru işaretinin (?) joker karakter olarak kullanılmasına desenlerde izin verilir.

Not

audit_log_include_users üzerinde daha yüksek önceliğe audit_log_exclude_userssahiptir. Örneğin, if vedemouser = audit_log_exclude_users ise = audit_log_include_usersdemouser, kullanıcı daha yüksek önceliğe sahip olduğundan audit_log_include_users denetim günlüklerine eklenir.

Olay Açıklama
CONNECTION - Bağlan başlatma
- Bağlan sonlandırma
CONNECTION_V2 - Bağlan başlatma (başarılı veya başarısız deneme hata kodu)
- Bağlan sonlandırma
DML_SELECT SELECT sorguları
DML_NONSELECT INSERT/DELETE/UPDATE sorguları
DML DML = DML_SELECT + DML_NONSELECT
DDL "DROP DATABASE" gibi sorgular
DCL "GRANT PERMISSION" gibi sorgular
ADMIN "SHOW STATUS" gibi sorgular
GENERAL Tümü DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve ADMIN'de
TABLE_ACCESS - SELECT veya INSERT INTO gibi tablo okuma deyimleri... SEÇİN
- DELETE veya TRUNCATE TABLE gibi tablo silme deyimleri
- INSERT veya REPLACE gibi tablo ekleme deyimleri
- UPDATE gibi tablo güncelleştirme deyimleri

Denetim günlüklerine erişme

Denetim günlükleri Azure İzleyici tanılama ayarlarıyla tümleştirilir. Esnek sunucunuzda denetim günlüklerini etkinleştirdikten sonra bunları Azure İzleyici günlüklerine, Azure Event Hubs'a veya Azure Depolama yayabilirsiniz. Tanılama ayarları hakkında daha fazla bilgi edinmek için tanılama günlükleri belgelerine bakın. Azure portalında tanılama ayarlarını etkinleştirme hakkında daha fazla bilgi edinmek için denetim günlüğü portalı makalesine bakın.

Not

Günlükleri tanılama ve ayarlar aracılığıyla Azure depolamaya gönderirseniz Premium Depolama hesapları desteklenmez.

Aşağıdaki bölümlerde, olay türüne göre MySQL denetim günlüklerinin çıkışı açıklanmaktadır. Çıkış yöntemine bağlı olarak, dahil edilen alanlar ve bunların görüntülenme sırası değişebilir.

Connection

Özellik Açıklama
TenantId Kiracı kimliğiniz
SourceSystem Azure
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiği zaman damgası
Type Günlüğün türü. Her zaman AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcısının adı. Her zaman MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI
Resource Büyük harfle sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s sunucusunun adı
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER
connection_id_d MySQL tarafından oluşturulan benzersiz bağlantı kimliği
host_s Boş
ip_s MySQL'e bağlanan istemcinin IP adresi
user_s Sorguyu yürüten kullanıcının adı
db_s Bağlı veritabanının adı
\_ResourceId Kaynak URI
status_d Bağlan ion CONNECTIONS_V2 olayı için hata kodu girdisi.

Genel

Aşağıdaki şema GENEL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve ADMIN olay türleri için geçerlidir.

Not

için sql_text_s, 2048 karakteri aşarsa günlük kesilir.

Özellik Açıklama
TenantId Kiracı kimliğiniz
SourceSystem Azure
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiği zaman damgası
Type Günlüğün türü. Her zaman AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcısının adı. Her zaman MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI
Resource Büyük harfle sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s sunucusunun adı
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (yalnızca MySQL 5.6 için kullanılabilir)
event_time UTC zaman damgasında sorgu başlangıç saati
error_code_d Sorgu başarısız olursa hata kodu. 0 hata yok anlamına gelir
thread_id_d Sorguyu yürüten iş parçacığının kimliği
host_s Boş
ip_s MySQL'e bağlanan istemcinin IP adresi
user_s Sorguyu yürüten kullanıcının adı
sql_text_s Tam sorgu metni
\_ResourceId Kaynak URI

Tablo erişimi

Not

için sql_text_s, 2048 karakteri aşarsa günlük kesilir.

Özellik Açıklama
TenantId Kiracı kimliğiniz
SourceSystem Azure
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiği zaman damgası
Type Günlüğün türü. Her zaman AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcısının adı. Her zaman MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI
Resource Büyük harfle sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s sunucusunun adı
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATEveya DELETE
connection_id_d MySQL tarafından oluşturulan benzersiz bağlantı kimliği
db_s Erişilen veritabanının adı
table_s Erişilen tablonun adı
sql_text_s Tam sorgu metni
\_ResourceId Kaynak URI

Azure İzleyici Günlüklerinde günlükleri analiz etme

Denetim günlükleriniz Tanılama Günlükleri aracılığıyla Azure İzleyici Günlüklerine bağlandıktan sonra, denetlenen olaylarınızın daha fazla analizini gerçekleştirebilirsiniz. Başlamanıza yardımcı olacak bazı örnek sorgular aşağıda verilmiştir. Aşağıdakini sunucu adınız ile güncelleştirdiğinden emin olun.

  • Belirli bir sunucudaki GENEL olayları listeleme

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • Belirli bir sunucudaki olayları CONNECTION_V2 listele sütunu, status_d bağlanırken istemci uygulamasının karşılaştığı istemci bağlantı hata kodunu belirtir.

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_subclass_s == "CONNECT"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, user_s, ip_s, status_d
    | order by TimeGenerated asc nulls last
    
  • Belirli bir sunucudaki CONNECTION olaylarını listeleme

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • Belirli bir sunucuda denetlenen olayları özetleme

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, 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
    
  • Belirli bir sunucudaki denetim olay türü dağılımının grafiğini oluşturma

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | summarize count() by Resource, bin(TimeGenerated, 5m)
    | render timechart
    
  • Denetim günlükleri için Tanılama Günlükleri'nin etkinleştirildiği tüm MySQL için Azure Veritabanı esnek sunucu örnekleri genelinde denetlenen olayları listeleme

    AzureDiagnostics
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    

Sonraki adımlar