تعقب نشاط قاعدة البيانات باستخدام سجلات التدقيق في قاعدة بيانات Azure ل MySQL - الخادم المرن
ينطبق على: قاعدة بيانات Azure لـMySQL - خادم مرن
يوفر خادم Azure Database for MySQL المرن للمستخدمين القدرة على تكوين سجلات التدقيق. يُمكن استخدام سجلات التدقيق لتعقب نشاط مستوى قاعدة البيانات، بما في ذلك أحداث الاتصال والمشرف وDDL وDML. تُستخدم هذه الأنواع من السجلات بشكل شائع لأغراض التوافق.
تكوين سجلات التدقيق
هام
يوصى فقط بتسجيل أنواع الأحداث والمستخدمين المطلوبين لأغراض التدقيق الخاصة بك لضمان عدم تأثر أداء الخادم بشكل كبير وجمع الحد الأدنى من البيانات.
بشكل افتراضي، يتم تعطيل سـجلات التدقيق. لتمكينها، عين معلمة الخادم audit_log_enabled
إلى ON. يمكن تكوين هذا باستخدام مدخل Azure أو Azure CLI.
تتضمن المعلمات الأخرى التي يُمكنك ضبطها للتحكم في سلوك تسجيل التدقيق ما يلي:
audit_log_events
: يتحكم في الأحداث التي سيتم تسجيلها. اتظر الجدول أدناه لأحداث تدقيق محددة.audit_log_include_users
: سيتم تضمين مستخدمي MySQL للتسجيل. القيمة الافتراضية لهذه المعلمة فارغة، والتي ستشمل جميع المستخدمين للتسجيل. لهذا أولوية أعلى علىaudit_log_exclude_users
. الحد الأقصى لطول المعلمة هو 512 حرفًا. على سبيل المثال، تتضمن قيمةdev*
حرف البدل جميع المستخدمين الذين لديهم إدخالات تبدأ بكلمة أساسيةdev
مثل "dev1،dev_user،dev_2". مثال آخر لإدخال حرف البدل لتضمين المستخدم في*dev
هذا المثال، يتم تضمين جميع المستخدمين الذين ينتهيون بالقيمة "dev" مثل "stage_dev،prod_dev،user_dev" في إدخالات سجل التدقيق. بالإضافة إلى ذلك، يسمح باستخدام علامة استفهام(?)
كحرف بدل في الأنماط.audit_log_exclude_users
: سيتم استبعاد مستخدمي MySQL من التسجيل. الحد الأقصى لطول المعلمة هو 512 حرفا. يتم أيضا قبول إدخالات أحرف البدل للمستخدم لاستبعاد المستخدمين في سجلات التدقيق. على سبيل المثال، تستبعد قيمةstage*
حرف البدل لجميع المستخدمين الذين لديهم إدخالات تبدأ بالكلمة الأساسيةstage
مثل "stage1,stage_user,stage_2". مثال آخر لإدخال حرف البدل لاستبعاد المستخدم في*com
هذا المثال، سيتم استبعاد جميع المستخدمين الذين ينتهيون بقيمةcom
من إدخالات سجل التدقيق. بالإضافة إلى ذلك، يسمح باستخدام علامة استفهام(?)
كحرف بدل في الأنماط.
إشعار
audit_log_include_users
لهذا أولوية أعلى على audit_log_exclude_users
. على سبيل المثال، في الحالة audit_log_include_users
= demouser
وaudit_log_exclude_users
= demouser
، سيتم تضمين المستخدم في سجلات التدقيق لأن audit_log_include_users
له أولوية أعلى.
الحدث | الوصف |
---|---|
CONNECTION |
- بدء الاتصال - إنهاء الاتصال |
CONNECTION_V2 |
- بدء الاتصال (رمز خطأ محاولة ناجحة أو غير ناجحة) - إنهاء الاتصال |
DML_SELECT |
تحديد الاستعلامات |
DML_NONSELECT |
إدراج/حذف/تحديث الاستعلامات |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
استعلامات مثل "DROP DATABASE" |
DCL |
استعلامات مثل "GRANT PERMISSION" |
ADMIN |
استعلامات مثل "SHOW STATUS" |
GENERAL |
الكل في DML_SELECT DML_NONSELECT وDML وDDL وDCL والمسؤول |
TABLE_ACCESS |
- عبارات قراءة الجدول، مثل SELECT أو INSERT INTO ... SELECT - عبارات حذف الجدول، مثل DELETE أو TRUNCATE TABLE -عبارات إدراج جدول مثل INSERT أو REPLACE -عبارات تحديث الجدول مثل UPDATE |
الوصول إلى سجلات التدقيق
يتم دمج سجلات التدقيق باستخدام إعدادات تشخيص Azure Monitor. بمجرد تمكين سجلات التدقيق على الخادم المرن، يمكنك إرسالها إلى سجلات Azure Monitor أو Azure Event Hubs أو Azure Storage. لمعرفة المزيد حول إعدادات التشخيص، راجع وثائق سجلات التشخيص. لمعرفة المزيد حول كيفية تمكين إعدادات التشخيص في مدخل Microsoft Azure، راجع مقالة مدخل سجل التدقيق.
إشعار
لا يتم دعم حسابات التخزين المتميزة إذا قمت بإرسال السجلات إلى تخزين Azure عبر التشخيص والإعدادات.
تصف المقاطع التالية إخراج سجلات التدقيق MySQL استنادًا إلى نوع الحدث. اعتمادا على أسلوب الإخراج، قد تختلف الحقول المضمنة وترتيب ظهورها.
الاتصال
الخاصية | الوصف |
---|---|
TenantId |
معرف المستأجر |
SourceSystem |
Azure |
TimeGenerated [UTC] |
الطابع الزمني عندما تم تسجيل السجل في UTC |
Type |
نوع الـسجل. دائم AzureDiagnostics |
SubscriptionId |
معرّف فريد للاشتراك الذي ينتمي إليه الخادم |
ResourceGroup |
اسم مجموعة الموارد التي ينتمي إليها الخادم |
ResourceProvider |
اسم موفر المورد. دائم MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI للمورد |
Resource |
اسم الخادم في الأحرف الكبيرة |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
اسم الـخادم |
event_class_s |
connection_log |
event_subclass_s |
CONNECT ، ، DISCONNECT CHANGE USER |
connection_id_d |
معرف اتصال فريد تم إنشاؤه بواسطة MySQL |
host_s |
فارغ |
ip_s |
عنوان IP للعميل المتصل بـ MySQL |
user_s |
اسم المستخدم المنفذ الاستعلام |
db_s |
اسم قاعدة البيانات المتصلة بـ |
\_ResourceId |
URI للمورد |
status_d |
الاتصالإدخال رمز الخطأ لحدث CONNECTIONS_V2. |
عام
ينطبق المخطط أدناه على أنواع أحداث عام DML_SELECT DML_NONSELECT وDML وDDL وDCL و ADMIN.
إشعار
بالنسبة إلى sql_text_s
، سوف يتم اقتطاع السجل إذا تجاوز 2048 حرفا.
الخاصية | الوصف |
---|---|
TenantId |
معرف المستأجر |
SourceSystem |
Azure |
TimeGenerated [UTC] |
الطابع الزمني عندما تم تسجيل السجل في UTC |
Type |
نوع الـسجل. دائم AzureDiagnostics |
SubscriptionId |
معرّف فريد للاشتراك الذي ينتمي إليه الخادم |
ResourceGroup |
اسم مجموعة الموارد التي ينتمي إليها الخادم |
ResourceProvider |
اسم موفر المورد. دائم MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI للمورد |
Resource |
اسم الخادم في الأحرف الكبيرة |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
اسم الـخادم |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR , RESULT (مُتاحة فقط لـ MySQL 5.6) |
event_time |
وقت بدء الاستعلام في الطابع الزمني UTC |
error_code_d |
رمز الخطأ في حالة فشل الاستعلام. 0 يعني عدم وجود خطأ |
thread_id_d |
معرف مؤشر الترابط المنفذ للاستعلام |
host_s |
فارغ |
ip_s |
عنوان IP للعميل المتصل بـ MySQL |
user_s |
اسم المستخدم المنفذ الاستعلام |
sql_text_s |
نص استعلام كامل |
\_ResourceId |
URI للمورد |
الوصول للجدول
إشعار
بالنسبة إلى sql_text_s
، سوف يتم اقتطاع السجل إذا تجاوز 2048 حرفا.
الخاصية | الوصف |
---|---|
TenantId |
معرف المستأجر |
SourceSystem |
Azure |
TimeGenerated [UTC] |
الطابع الزمني عندما تم تسجيل السجل في UTC |
Type |
نوع الـسجل. دائم AzureDiagnostics |
SubscriptionId |
معرّف فريد للاشتراك الذي ينتمي إليه الخادم |
ResourceGroup |
اسم مجموعة الموارد التي ينتمي إليها الخادم |
ResourceProvider |
اسم موفر المورد. دائم MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI للمورد |
Resource |
اسم الخادم في الأحرف الكبيرة |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
اسم الـخادم |
event_class_s |
table_access_log |
event_subclass_s |
READ , INSERT , UPDATE , أو DELETE |
connection_id_d |
معرف اتصال فريد تم إنشاؤه بواسطة MySQL |
db_s |
اسم قاعدة البيانات التي تم الوصول لها |
table_s |
اسم الجدول الذي تم الوصول له |
sql_text_s |
نص استعلام كامل |
\_ResourceId |
URI للمورد |
تحليل السجلات في Azure Monitor Logs
بمجرد نقل سجلات التدقيق إلى سجلات Azure Monitor من خلال سجلات التشخيص، يمكنك إجراء مزيد من التحليل للأحداث التي تم تدقيقها. فيما يلي بعض الاستعلامات النموذجية لمساعدتك على البدء. تأكد من التحديث أدناه باسم الخادم الخاص بك.
أحداث List GENERAL على خادم معين
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
سرد الأحداث CONNECTION_V2 على خادم معين،
status_d
يشير العمود إلى رمز خطأ اتصال العميل الذي يواجهه تطبيق العميل أثناء الاتصال.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
أحداث List CONNECTION على خادم معين
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
تلخيص الأحداث المدققة على خادم معين
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
Graph توزيع نوع حدث التدقيق على خادم معين
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
سرد الأحداث المدققة عبر جميع مثيلات الخادم المرن ل Azure Database for MySQL مع تمكين سجلات التشخيص لسجلات التدقيق
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
الخطوات التالية
- تعرف على المزيد عنسجلات الاستعلام البطيئة
- تكوينالتدقيق
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ