مقدمة
في هذا البرنامج التعليمي، ستتعلم كيفية جمع المقاييس المجمعة لقاعدة بيانات PostgreSQL التي تتم إدارتها على DigitalOcean باستخدام تطبيق ويب تم نشره على منصة تطبيقات DigitalOcean.
ستستخدم تطبيق Node.js تجريبي لهذا العرض التوضيحي وستقوم بتوصيله بقاعدة بيانات DigitalOcean PostgreSQL المُدارة التي ستقوم بإنشائها في هذا البرنامج التعليمي.
في نهاية هذا البرنامج التعليمي، سيكون لديك لوحة تحكم Prometheus تقوم باستخراج وعرض المقاييس من قاعدة بيانات PostgreSQL مُدارة متصلة بتطبيق ويب App Platform.
المتطلبات الأساسية
قبل البدء، تأكد من توفر المتطلبات الأساسية التالية:
- حساب DigitalOcean.
- تطبيق Node.js تجريبي تم نشره على منصة التطبيقات.
- تم نشر قاعدة بيانات Postgres وربطها بتطبيق منصة التطبيقات.
- رمز وصول شخصي مُنشأ بصلاحيات القراءة والكتابة. يمكنك اتباع هذا الدليل لإنشاء رمز وصول شخصي خاص بك.
الخطوة 1 - إعداد قاعدة بيانات PostgreSQL مُدارة
لنبدأ بإنشاء قاعدة بيانات PostgreSQL.
انتقل إلى قسم قواعد البيانات في لوحة تحكم السحابة الرقمية الخاصة بك على DigitalOcean.
انقر على "إنشاء مجموعة قواعد بيانات" وحدد PostgreSQL. ستحتاج إلى تحديد منطقة مركز البيانات وشبكة VPC، كما هو موضح في الصورة أدناه:
بعد ذلك، حدد PostgreSQL كقاعدة بيانات واختر الإعدادات الأخرى لقاعدة البيانات الخاصة بك.
قم بضبط إعدادات قاعدة البيانات، واتبع التعليمات التي تظهر على الشاشة، ثم انقر فوق إنشاء مجموعة قواعد البيانات.
بمجرد إنشاء مجموعة قواعد البيانات المُدارة PostgreSQL، يمكنك مراجعة نظرة عامة عليها، ورؤاها، وتقاريرها، بالإضافة إلى إعداداتها في علامات التبويب التالية:
الخطوة الثانية - نشر نسخة من تطبيق ويب Node.js على منصة التطبيق
يمكنك اتباع الخطوات لنشر تطبيق Node.js تجريبي أو استخدام مستودع github هذا لإنشاء تطبيق Node.js تجريبي على منصة التطبيقات.
إذا اخترت الخيار الثاني، فستحتاج إلى إنشاء نسخة من مستودع GitHub هذا وحفظها في حسابك على GitHub. انقر على زر "Fork" في مستودع GitHub واتبع التعليمات الظاهرة على الشاشة.
الآن قم بتسجيل الدخول إلى بوابة DigitalOcean السحابية وانتقل إلى إنشاء تطبيق -> منصة التطبيق.
ثم، ضمن "أخرى: تحديد تطبيق تجريبي"، حدد تطبيق Node.js التجريبي من القائمة المنسدلة للتطبيق التجريبي، وانقر فوق التالي.
اتبع التعليمات الظاهرة على الشاشة لإعداد موارد التطبيق، والتكوين العام، ومتغيرات البيئة، ثم انقر على "التالي". بعد الانتهاء، راجع تكوين التطبيق العام. عند الانتهاء، انقر على "إنشاء الموارد". بعد إنشاء التطبيق، سيستغرق الأمر بعض الوقت قبل نشره على منصة التطبيقات.
بمجرد نشر التطبيق وبنائه، يمكنك التحقق من نظرة عامة على التطبيق وزيارة التطبيق المنشور في متصفحك.
الخطوة 3 - ربط قاعدة بيانات PostgreSQL بمنصة التطبيق
في هذه الخطوة، تقوم بربط قاعدة بيانات PostgreSQL المُدارة التي تم إنشاؤها في الخطوة 1 من هذا البرنامج التعليمي بنموذج تطبيق Node.js الذي تم إنشاؤه في الخطوة 2.
انتقل إلى تطبيق منصة التطبيق المنشور، وانقر فوق زر الإنشاء في لوحة معلومات التطبيق المنشور، ثم انقر فوق "إنشاء/إرفاق قاعدة البيانات":
ثم حدد "قاعدة بيانات DigitalOcean التي تم إنشاؤها مسبقًا" وحدد مجموعة قواعد البيانات المُدارة PostgreSQL التي تم نشرها مؤخرًا وانقر فوق زر "إرفاق قاعدة البيانات" في الأسفل.
يمكنك التحقق في قسم نظرة عامة على قاعدة البيانات من أنه تمت إضافة تطبيق منصة التطبيقات بنجاح كمصدر موثوق.
الخطوة 4 - الحصول على المقاييس القابلة للاستخراج من نقطة النهاية /metrics
يمكنك عرض مقاييس مجموعة قواعد البيانات الخاصة بك برمجيًا عبر نقطة النهاية /metrics. تتضمن نقطة النهاية هذه أكثر من عشرين ضعفًا من المقاييس التي يمكنك الوصول إليها في علامة التبويب "الرؤى" في لوحة التحكم.
يمكنك الوصول إلى نقطة نهاية القياس باستخدام أمر curl أو استخدام Postman لعرض تلك المقاييس في نظام مراقبة مثل Prometheus.
أولاً، انتقل إلى قسم واجهة برمجة التطبيقات (API) في لوحة تحكم DigitalOcean، وأنشئ رمز وصول شخصي جديد، ثم انقر على "إنشاء رمز وصول كامل". يُرجى تدوين رمز الوصول، حيث ستحتاج إليه في الخطوات التالية.
في هذا المثال، ستستخدم Postman لتنفيذ جميع طلبات HTTP. أو يمكنك تشغيل أوامر curl من مثيل منصة التطبيق الخاصة بك للحصول على استجابات لطلبات API.
احصل على اسم المضيف والمنفذ.
أولاً، تحتاج إلى استرداد اسم مضيف مقاييس المجموعة الخاصة بك عن طريق إرسال طلب GET إلى https://api.digitalocean.com/v2/databases/{UUID}.
قم بتشغيل أمر curl التالي من مثيل منصة التطبيقات الخاصة بك. للقيام بذلك، انتقل إلى قسم وحدة التحكم:
استخدم الأمر التالي للحصول على اسم المضيف وبيانات اعتماد قاعدة البيانات
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/{UUID}' --header 'Content-Type: application/json' --header "Authorization: Bearer $RO_DIGITALOCEAN_TOKEN"يرجى استبدال {UUID} و $RO_DIGITALOCEAN_TOKEN بمعرف UUID الخاص بقاعدة بيانات PostgreSQL المُدارة وكلمة مرور الوصول الشخصية الخاصة بك.
يجب أن يُظهر لك هذا الأمر مخرجات تتضمن تفاصيل مجموعة قواعد بيانات PostgreSQL المُدارة:
Output
"database": {
"id": "192a6077-d103-4e72-bd2c-e370fd6b5608",
"name": "db-postgresql-nyc3-66505",
"engine": "pg",
"version": "16",
"semantic_version": "16.3",
"connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"private_connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"metrics_endpoints": [
{
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 9273
}
],
"users": [
{
"name": "doadmin",
"role": "primary",
"password": "XXXXXXXXXXX"
}
],
"db_names": [
"defaultdb"
],
"num_nodes": 1,
"region": "nyc3",
"status": "online",
"created_at": "2024-06-10T21:04:32Z",
"maintenance_window": {
"day": "monday",
"hour": "00:07:46",
"pending": false
},
"size": "db-s-1vcpu-1gb",
"tags": [
"testtestnn"
],
"private_network_uuid": "xxxxxxxxxx",
"project_id": "xxxxxxxxxxx",
"read_only": false,
"version_end_of_life": "2028-11-09T00:00:00Z",
"version_end_of_availability": "2028-05-09T00:00:00Z",
"storage_size_mib": 10240
}
}في المخرجات أعلاه، يُرجى ملاحظة اسم المضيف/المنفذ. في حالتنا، اسم المضيف هو db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com والمنفذ هو 9273.
أيضًا، إذا قمت بتثبيت Postman على نظامك وأضفت عنوان IP الخاص بنظامك كمصدر موثوق به في إعدادات المصادر الموثوقة لقاعدة البيانات، فيمكنك تشغيل طلب HTTP GET المذكور أعلاه في Postman.
ما عليك سوى إضافة عنوان URL https://api.digitalocean.com/v2/databases/{UUID} واستبدال رمز الوصول الشخصي الخاص بك ضمن علامة التبويب "التفويض" بنوع التحقق المحدد كرمز حامل.
التحقق من صحة مقاييس المجموعة
بعد ذلك، ستحتاج إلى بيانات اعتماد مقاييس المجموعة. يمكنك استردادها عن طريق إرسال طلب GET إلى https://api.digitalocean.com/v2/databases/metrics/credentials باستخدام رمز مميز للمسؤول أو الكتابة.
استخدم أمر curl التالي من تطبيق App Platform التجريبي:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/metrics/credentials' --header 'Content-Type: application/json' --header "Authorization: Bearer xxxxxxxxxxxxxxxxx"ينبغي أن يمنحك بيانات اعتماد مقاييس المجموعة مع اسم المستخدم وكلمة المرور.
Output{
"credentials": {
"basic_auth_username": "prom2prh",
"basic_auth_password": "xxxxxxxxxxxxx"
}
}الوصول إلى نقطة النهاية /metrics
للوصول إلى نقطة النهاية باستخدام cURL، أرسل طلب GET إلى https://$HOST:9273/metrics واستبدل متغيرات اسم المضيف واسم المستخدم وكلمة المرور ببيانات الاعتماد التي وجدتها في الخطوات السابقة:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl -XGET -k -u $USERNAME:$PASSWORD https://$HOST:9273/metricsينبغي أن يوفر لك الكثير من البيانات الوصفية مثل ما يلي:
Output...
1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0.7
# HELP system_n_cpus Telegraf collected metric
# TYPE system_n_cpus gauge
system_n_cpus{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 1
# HELP system_n_unique_users Telegraf collected metric
# TYPE system_n_unique_users gauge
system_n_unique_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_n_users Telegraf collected metric
# TYPE system_n_users gauge
system_n_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_uptime Telegraf collected metric
# TYPE system_uptime counter
system_uptime{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 640073
...الخطوة 5 - عرض المقاييس باستخدام بروميثيوس
للوصول إلى نقطة النهاية باستخدام بروميثيوس، انسخ الإعدادات التالية إلى ملف prometheus.yml، مع استبدال اسم المضيف واسم المستخدم وكلمة المرور ومسار شهادة المرجع المصدق. هذا يُهيئ بروميثيوس لاستخدام جميع بيانات الاعتماد اللازمة للوصول إلى نقطة النهاية.
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'dbaas_cluster_metrics_svc_discovery'
scheme: https
tls_config:
ca_file: /path/to/ca.crt
dns_sd_configs:
- names:
- $TARGET_ADDRESS
type: 'A'
port: 9273
refresh_interval: 15s
metrics_path: '/metrics'
basic_auth:
username: $BASIC_AUTH_USERNAME
password: $BASIC_AUTH_PASSWORDيرجى استبدال $TARGET_ADDRESS و $BASIC_AUTH_USERNAME و $BASIC_AUTH_PASSWORD باسم المضيف واسم المستخدم وكلمة المرور التي تم الحصول عليها في الخطوات المذكورة أعلاه.
ثم انسخ نص الاتصال التالي إلى ملف باسم up.sh. سيقوم هذا النص بتشغيل envsubst وبدء حاوية Prometheus بالإعدادات من الخطوة السابقة.
#!/bin/bash
envsubst < prometheus.yml > /tmp/dbaas-prometheus.yml
docker run -p 9090:9090 \
-v /tmp/dbaas-prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheusانتقل إلى http://localhost:9090/targets في متصفحك للتحقق من أن العديد من المضيفين يعملون بشكل صحيح.
ثم انتقل إلى http://localhost:9090/graph للاستعلام عن مقاييس قاعدة البيانات من Prometheus.
لمزيد من التفاصيل، راجع وثائق Prometheus DNS SD ووثائق تكوين TLS.
لتعلم وفهم كل مقياس من المقاييس، يمكنك الاطلاع على وثيقة إحصائيات مراقبة PostgreSQL الرسمية هذه.
يمكنك أيضًا معرفة المزيد حول كيفية جمع المقاييس القابلة للاستخراج لقاعدة بيانات PostgreSQL مُدارة.
نتيجة
ستتعلم في هذا الدليل كيفية إعداد واستخراج المقاييس من قاعدة بيانات PostgreSQL مُدارة على منصة DigitalOcean باستخدام تطبيق ويب Node.js مُثبّت على منصة تطبيقات DigitalOcean وبرنامج Prometheus. من خلال تفعيل المقاييس القابلة للاستخراج، يمكنك بسهولة مراقبة أداء قواعد البيانات وحالتها، مما يضمن الأداء الأمثل واستكشاف الأخطاء وإصلاحها بشكل معمق.


























