MySQL için Azure veritabanı esnek sunucusu 'nda denetim günlükleriyle veritabanı etkinliğini izleme

Uygulama hedefi: 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ı dahil olmak üzere veritabanı düzeyi etkinliğini 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 yoğun bir şekilde etkilenmemesini ve en az miktarda veri toplandığından emin olmak için, yalnızca denetim amaçları için gereken olay türlerini ve kullanıcı oturumlarını açmanız önerilir.

Varsayılan olarak, denetim günlükleri devre dışıdır. Bunları etkinleştirmek için audit_log_enabled sunucu parametresini Açık olarak ayarlayın. Bu, Azure portal veya Azure CLı kullanılarak yapılandırılabilir .

Denetim günlüğü davranışları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ük kaydına eklenecek MySQL kullanıcıları. Bu parametre için varsayılan değer boştur; bu, günlüğe kaydedilecek tüm kullanıcıları içerir. Bunun önceliği daha yüksektir audit_log_exclude_users . Parametrenin uzunluk üst sınırı 512 karakterdir.
  • audit_log_exclude_users: MySQL kullanıcılarının günlüğe kaydetme dışında tutulması. Parametrenin uzunluk üst sınırı 512 karakterdir.

Not

audit_log_include_users daha yüksek önceliğe sahiptir audit_log_exclude_users . Örneğin, ve ise audit_log_include_users = demouser audit_log_exclude_users = demouser , Kullanıcı audit_log_include_users daha yüksek önceliğe sahip olduğu için denetim günlüklerine dahil edilir.

Olay Açıklama
CONNECTION -Bağlantı başlatma (başarılı veya başarısız)
-Oturum sırasında farklı kullanıcı/parola ile Kullanıcı yeniden kimlik doğrulaması
-Bağlantı sonlandırma
DML_SELECT Sorguları Seç
DML_NONSELECT EKLEME/SILME/GÜNCELLEŞTIRME sorguları
DML DML = DML_SELECT + DML_NONSELECT
DDL "VERITABANıNı bırak" gibi sorgular
DCL "Izın ver" gibi sorgular
ADMIN "Durumu göster" gibi sorgular
GENERAL DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve ADMIN içinde tümü
TABLE_ACCESS -SELECT veya INSERT gibi tablo okuma deyimleri... SEÇIN
-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 Izleyici tanılama ayarlarıyla tümleşiktir. MySQL esnek sunucunuzda denetim günlüklerini etkinleştirdikten sonra, bunları azure izleyici günlüklerine, Event Hubs veya azure Depolama yayabilirsiniz. Tanılama ayarları hakkında daha fazla bilgi edinmek için bkz. tanılama günlükleri belgeleri. Azure portal tanılama ayarlarının nasıl etkinleştirileceği hakkında daha fazla bilgi edinmek için Denetim günlüğü portalı makalesinebakın.

Aşağıdaki bölümlerde, olay türüne göre MySQL denetim günlüklerinin çıktısı açıklanır. Çıkış yöntemine bağlı olarak, dahil edilen alanlar ve göründükleri sıralama farklılık gösterebilir.

Bağlantı

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcının adı. Her MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI 'SI
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun 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ğlanılan veritabanının adı
\_ResourceId Kaynak URI 'SI

Genel

Aşağıdaki şema genel, DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve yönetıcı olay türleri için geçerlidir.

Not

İçin sql_text_s , 2048 karakteri aşarsa günlük kesilecek.

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcının adı. Her MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI 'SI
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun 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 olduysa hata kodu. 0 hata yok demektir
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 'SI

Tablo erişimi

Not

İçin sql_text_s , 2048 karakteri aşarsa günlük kesilecek.

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcının adı. Her MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI 'SI
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun adı
event_class_s table_access_log
event_subclass_s READ, INSERT , UPDATE veya 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 'SI

Azure Izleyici günlüklerinde günlükleri analiz etme

Denetim günlüklerinizin tanılama günlükleri aracılığıyla Azure Izleyici günlüklerine alındıktan sonra, denetlenen olaylarınızın daha fazla analizini gerçekleştirebilirsiniz. Aşağıda, başlamanıza yardımcı olacak bazı örnek sorgular verilmiştir. Aşağıdaki öğesini sunucu adınızla güncelleştirdiğinizden emin olun.

  • Belirli bir sunucudaki genel olayları listeleme

    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
    
  • Belirli bir sunucudaki bağlantı olaylarını listeleme

    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
    
  • Belirli bir sunucuda denetlenen olayları özetleme

    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
    
  • belirli bir sunucuda denetim olayı türü dağıtımını Graph

    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
    
  • Denetim günlükleri için etkinleştirilmiş tanılama günlükleri ile tüm MySQL sunucularındaki denetlenen olayları listeleme

    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
    

Sonraki adımlar