مراقبة خادم قاعدة بيانات وتكوينها

مكتمل

بعد ترحيل الشركة لقواعد بياناتها الداخلية إلى Azure Database لنظام MySQL/PostgreSQL، لا يزالون بحاجة إلى طريقة لمراقبة أدائهم.

بصفتك مطور لقاعدة البيانات لقد اعتدت على استخدام أدوات خاصة بقواعد البيانات، ومراقبة الأجهزة الظاهرية الداخلية. والآن بعد تشغيل قواعد البيانات الخاصة بك على Azure، يمكنك الاستفادة من المدخل لاستخدام أداة واحدة لمراقبة جميع قواعد البيانات المختلفة.

في هذه الوحدة ستتعرف على كيفية دعم Azure Monitor لك في مراقبة صحة قواعد البيانات المسؤولة منك. بمجرد الكشف عن المشكلات، سترى كيفية تغيير تكوين قواعد البيانات لحل المشكلات.

كيفية استخدام Azure Monitor لعرض صحة قواعد البيانات

استخدام Azure Monitor لتتبع استخدام الموارد في Azure Database لنظام MySQL/PostgreSQL. تمكنك صفحة المقاييس الخاصة بالخادم في مدخل Microsoft Azure من إنشاء مخططات تساعد على اكتشاف الاتجاهات في الأداء، وتحديد الحالات الشاذة.

مقاييس Azure Database لنظام MySQL/PostgreSQL

المقاييس المتوفرة لمراقبة الخادم تندرج ضمن أربع فئات رئيسية:

  • مقاييس التخزين
  • مقاييس الاتصال
  • مقاييس استخدام موارد معالجة البيانات
  • مقاييس النسخ المتماثل

مقاييس التخزين

تتبع مقاييس التخزين الحجم الإجمالي لقواعد البيانات عبر الخادم (التخزين المستخدم)، والمقدار الحالي لمساحة التخزين على الخادم (حد التخزين). في نظام نشط، من المحتمل أن تجد مقياس التخزين المستخدم ينمو بمرور الوقت. إذا كان لديك خيار النمو التلقائي المحدد للخادم، يزداد مقياس حد التخزين أحيانا مع تقليل مقدار المساحة الفارغة. وقد يتم إضافة سعة تخزين إضافية كلما انخفض مقدار المساحة الحرة إلى أقل من 5 بالمائة من الاستخدام الحالي. استخدم مقياس النسبة المئوية للتخزين لعرض نسبة المساحة المستخدمة لتحرير مساحة على الخادم الخاص بك.

وإذا كان الخادم الخاص بك يقضي وقتًا في زيادة مساحة التخزين بشكل منتظم، يمكنك مراعاة تعيين مساحة أكبر يدويًا. قم بذلك في مدخل Microsoft Azure عن طريق تحديد صفحة Pricing tier للخادم الخاص بك، واستخدم شريط تمرير Storage . وتذكر أنك مسؤولاً عن التخزين، لذلك لا تقم بإعداد سعة التخزين المتوفرة إلى مستوى لا تستطيع مواكبته.

يوضح مقياس تخزين النسخ الاحتياطي المستخدم مقدار المساحة التي تأخذها النسخ الاحتياطية. هذا المقياس مهم من منطلق التكلفة. لن يتم تحصيل أي رسوم مقابل تخزين النسخ الاحتياطي شريطة أن تظل أقل من حجم مساحة التخزين المخصصة للخادم (كما هو محدد من قبل مستوى التسعير). وعند تجاوز هذا الحد، تتحمل رسومًا على تخزين النسخ الاحتياطي.

مقاييس الاتصال

يوضح مقياس الاتصالات النشطة عدد الاتصالات المتزامنة التي يدعمها الخادم حاليا. وقد لا يماثل هذا عدد المستخدمين المتزامنين، وذلك بناءً على ما إذا كنت قد قمت بتكوين أي نوع من تجمع الاتصالات. لا توفر قاعدة بيانات Azure ل MySQL/PostgreSQL حاليا أي إمكانية لتجميع الاتصال، ولكن يمكنك استخدام خدمة وكيل مثل PgBouncer* (ل PostgreSQL) لتنفيذ هذه الميزة. لمزيد من المعلومات، راجع أفضل ممارسات الأداء لاستخدام قاعدة بيانات Azure ل PostgreSQL - تجميع الاتصال

يوضح مقياس الاتصالات الفاشلة عدد المرات التي قدم فيها المستخدمون بيانات اعتماد غير صالحة. وقد يشير عدد كبير من هذه الأحداث على مدى فترة قصيرة من الزمن إلى هجوم عنيف.

مقاييس استخدام موارد معالجة البيانات

تساعدك هذه المقاييس على مراقبة كيفية معالجة الخادم لأحمال العمل.

يوضح مقياس النسبة المئوية لوحدة المعالجة المركزية مدى انشغال وحدة المعالجة المركزية. ولا يُمثل استخدام وحدة معالجة مركزية فائقة مشكلة، إلا إذا كان قد تزايد مع مرور الوقت. بينما يشير استخدام وحدة معالجة مركزية بما يزيد عن 90% وما زال يواصل الزيادة إلى أن النظام الخاص بك يقترب من سعة المعالجة. لذا، ينبغي مراعاة رفع مستوى التسعير إلى مستوى يتميز بمزيد من الموارد.

يشير مقياس النسبة المئوية للذاكرة إلى إشغال الذاكرة. وتستخدم Azure Database لنظام MySQL/PostgreSQL الذاكرة للتخزين المؤقت للبيانات، ولإدارة العمليات التي بدأها كل طلب من العميل. ولا يسبب استخدام ذاكرة عالية مشكلة حتى يصبح مفرطًا بما يزيد عادةً عن 95%، اعتمادًا على مقدار الذاكرة الفعلية المتوفرة. وقد يؤدي توفر الذاكرة المنخفضة جدًا إلى فشل الاتصال، وبطء الأداء بسبب تقسيم الذاكرة. وينبغي مراقبة هذا المقياس لتحديد ما إذا كان شغل الذاكرة آخذًا في الزيادة بمرور الوقت، ومقياس الخادم بدوره.

يتتبع مقياس IO percent مقدار نشاط القرص الذي يقوم به الخادم. وبشكل مثالي ينبغي أن تكون هذه القيمة منخفضة قدر الإمكان. عملية Disk IO بطيئة. قد تشير القيمة العالية لهذا المقياس، جنبا إلى جنب مع قيمة عالية لذاكرة النسبة المئوية، إلى أن الخادم ليس لديه موارد كافية لتخزين البيانات مؤقتا بشكل فعال، وبدلا من ذلك يضطر إلى قراءة البيانات وكتابتها إلى تخزين القرص. وتُعتبر درجة من نشاط IO أمرًا حتميًا؛ نظرًا إلى أنه يجب أن تكون البيانات الخاصة بك ثابتة على القرص في نقطة ما، ويجب الاحتفاظ بسجلات المعاملات. وفي معظم خوادم قاعدة البيانات، تتم الكتابة عبر عملية منفصلة أو مؤشر ترابط يتم تشغيله بشكل غير متزامن.

تظهر مقاييس Network In وNetwork Out حجم نسبة استخدام الشبكة التي تدخل الخادم وتخرج منه عبر الاتصالات النشطة. ويتم تحديد حدود هذه الأرقام عبر النطاق الترددي للمسار بين تطبيقات العميل والخادم.

مقاييس النسخ المتماثل

توفر قاعدة بيانات Azure ل PostgreSQL مقاييس Max Lag عبر النسخ المتماثلة، ومقاييس Replica Lag لمساعدتك في تحديد مدى تحديث أي نسخ متماثلة. ولا تكون هذه المقاييس ذات معنى إلا إذا قمت بتكوين النسخ المتماثلة للقراءة فقط.

يوضح مقياس Max Lag Across Replicas عدد وحدات البايت التي تكون أبطأ نسخة متماثلة خلف النسخة الرئيسية. يمكنك فقط مراقبة هذا المقياس من النسخة الرئيسية.

يوضح مقياس Replica Lag الوقت، بالثوان، منذ تلقي آخر معاملة من الشكل الرئيسي وتطبيقها على نسخة متماثلة. هذا القياس يبدو منطقيًا فقط عند عرضه في النسخة المتماثلة.

تحتوي قاعدة بيانات Azure ل MySQL على مقياس تأخر النسخ المتماثل بالثوان . ويوضح هذا المقياس عدد الثواني التي تتخلفها النسخة المتماثلة عن النسخة الرئيسية ويمكنك مراقبته فقط من نسخة متماثلة.

إنشاء مخططات بيانية وتنبيهات لمراقبة الأداء

تمكنك صفحة Metrics لخادم في مدخل Microsoft Azure من إنشاء مخططات تتعقب قيم القياس. ويتم تجميع المقاييس على فواصل زمنية من دقيقة واحدة. لكل مقياس، يمكنك تحديد تجميعة تحدد كيفية الإبلاغ عن هذا المقياس.

  • ينشئ المتوسط قيمة متوسطة للمقياس في كل دقيقة
  • يظهر Max الحد الأقصى للقيمة التي تم تحقيقها خلال كل دقيقة
  • الحد الأدنى يظهر أصغر قيمة
  • مجموع إجمالي المقياس
  • يوضح Count عدد المرات التي حدث فيها الحدث الذي أنشأ المقياس

لا يشترط أن تُمثِّل جميع التجميعات معنى لكل مقياس.

يسجل المثال التالي مخطط بياني لقيم المتوسط دقيقة بدقيقة مقابل مقاييس النسبة المئوية للمعالج، ونسبة الذاكرة، ونسبة IO والاتصالات النشطة. ستجد أن هناك 101 اتصال نشط يعمل في وقت واحد جميعًا. استخدام المعالج والذاكرة مستقر ونسبة IO قدرها 0. في هذا المثال، تنفذ تطبيقات العميل أحمال العمل ذات القراءة المكثفة وتخزين البيانات الضرورية في الذاكرة بشكل مؤقت.

Image of the chart showing the values captured for the CPU percent, Memory percent, IO percent, and Active connections metrics

لاحظ أن هناك تأخيرًا يصل إلى خمس دقائق بين المقاييس التي يتم تسجيلها والنتائج المعروضة على المخطط.

إذا أشار مقياس إلى أن المورد يصل إلى نقطة حرجة، يمكنك إعداد تنبيه لتنبيه المسؤول. ويرسل المثال التالي رسالة بريد إلكتروني إلى المسؤول إذا تجاوزت نسبة استخدام الذاكرة 90 بالمائة.

Image of the alerts page, showing a new alert that sends an email if memory utilization exceeds 90%

تكوين معلمات الخادم

الخوادم الأصلية MySQL وPostgreSQL قابلة للتكوين بشكل كبير حيث يستخدم كلاهما إعدادات التكوين المخزنة في ملفات المعلمة. بالنسبة إلى PostgreSQL، يتم الاحتفاظ بهذه المعلومات في ملف postgresql.conf . بالنسبة إلى MySQL، يتم تخزين بيانات التكوين في ملفات my.cnf المختلفة. ولا يمكنك الوصول المباشر إلى هذه الملفات في Azure Database لنظام MySQL/PostgreSQL. بدلاً من ذلك، يمكنك عرض معلمات الخادم وتعديلها باستخدام مدخل Microsoft Azure أو Azure CLI.

عرض المعلمات وإعدادها باستخدام مدخل Microsoft Azure

تتوفر معلمات تكوين الخادم في صفحة معلمات الخادم للخادم الخاص بك في مدخل Microsoft Azure. يمكنك تعديل قيم المعلمات كما هو مناسب للخادم الخاص بك. توضح الصورة التالية صفحة معلمات الخادم لـAzure Database لنظام PostgreSQL. الصفحة المقابلة مشابهة لـ Azure Database لنظام MySQL.

Image of the Server parameters page for Azure Database for PostgreSQL

لا تتوفر جميع معلمات تكوين الخادم؛ لأن جزءًا كبيرًا من تكوين الخادم يتم التحكم به عبر Azure. على سبيل المثال، المعلمات المرتبطة بتوزيع الذاكرة مفقودة. بالإضافة إلى ذلك، لا تدعم Azure Database for MySQL تخزين ISAM، لذلك لا توجد معلمات myisam .

تدخل التغييرات على المعلمات التي تم وضع علامة عليها على أنها Dynamic حيز التنفيذ على الفور. تتطلب منك المعلمات التي تم وضع علامة ثابت عليها إعادة تشغيل الخادم. يمكنك القيام بذلك في صفحة نظرة عامة على الخادم الخاص بك.

Image of the Overview page for Azure Database for PostgreSQL. The Restart button is highlighted

عرض المعلمات وإعدادها باستخدام Azure CLI

يمكنك عرض المعلمات وتعديلها برمجيا باستخدام az mysql/postgres server configuration الأوامر. عرض إعدادات كل معلمة تكوين مع az mysql/postgres server configuration list، والمنزل في على معلمة واحدة باستخدام az mysql/postgres server configuration show [parameter-name]. توضح القصاصة البرمجية التالية مثال لـ Azure Database لنظام PostgreSQL:

az postgres server configuration show \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age

ينبغي أن تكون النتيجة مشابهة لهذا:

{
  "allowedValues": "0-1000000",
  "dataType": "Integer",
  "defaultValue": "0",
  "description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
  "id": "**********************",
  "name": "vacuum_defer_cleanup_age",
  "resourceGroup": "northwindrg",
  "source": "system-default",
  "type": "Microsoft.DBforPostgreSQL/servers/configurations",
  "value": "0"
}

العنصر المهم في الإخراج هو حقل القيمة ، الذي يعرض الإعداد الحالي للمعلمة.

az mysql/postgres server configuration set استخدم الأمر لتغيير قيمة معلمة التكوين، كما يلي:

az postgres server configuration set \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age \
    --value 5

إذا كنت بحاجة إلى إعادة تشغيل خادم بعد تغيير معلمة ثابتة، فقم بتشغيل az mysql/postgres server restart الأمر :

az postgres server restart \
    --resource-group northwindrg \
    --name northwind101