MySQL için Azure Veritabanı - Esnek Sunucuda Denetim Günlükleri ile veritabanı etkinliğini izleme
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 minimum 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_enabled
ON 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, üzerindeaudit_log_exclude_users
daha yüksek önceliğe sahiptir. Parametrenin en fazla uzunluğu 512 karakterdir. Örneğin joker karakter değeridev*
, "dev1,dev_user,dev_2" gibi anahtar sözcükledev
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ğeristage*
, "stage1,stage_user,stage_2" gibi anahtar sözcüklestage
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ğerlecom
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_users
sahiptir. Örneğin, if vedemouser
= audit_log_exclude_users
ise = audit_log_include_users
demouser
, kullanıcı daha yüksek önceliğe sahip olduğundan audit_log_include_users
denetim günlüklerine eklenir.
Olay | Açıklama |
---|---|
CONNECTION |
- Bağlantı başlatma - Bağlantı sonlandırma |
CONNECTION_V2 |
- Bağlantı başlatma (başarılı veya başarısız deneme hata kodu) - Bağlantı 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ÇMEK - 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'ya 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 |
CONNECTIONS_V2 olayı için Bağlantı Hatası 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 , 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 |
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