لماذا تتم عملية إضافة الخوادم بشكل تلقائي
عندما تقوم بمراقبة 5 خوادم MariaDB / MySQL، فإن إضافتها يدويًا إلى PmaControl أمر مقبول. عند 50 أو 200 خادم، لم يعد هذا هو الحال.
يسمح API REST لـ PmaControl بتصنيع هذه الإضافة: يمكن لبرنامج نصي أو خط أنابيب CI/CD أو أداة تنسيق (Ansible وTerraform) إنشاء خادم خاضع للإشراف في طلب HTTP واحد.
المتطلبات الأساسية
- حساب خدمة ويب نشط في PmaControl (تم إنشاؤه أثناء التثبيت عبر
config.json) - عنوان URL لمثيل PmaControl الخاص بك
- يجب أن يكون العميل والبيئة المستهدفين موجودين (قم بإنشائهما أولاً عبر API إذا لزم الأمر)
نقطة النهاية الأساسية
POST /fr/api/config/servers
Content-Type: application/json
المصادقة عبر حساب خدمة الويب الذي تم تكوينه في configuration/webservice.config.php.
الحمولة لإضافة خادم
{
"id_client": 1,
"id_environment": 1,
"name": "prod-db-01",
"display_name": "Production DB 01",
"ip": "10.68.68.100",
"hostname": "prod-db-01.internal",
"login": "pmacontrol",
"passwd": "SecurePassword123",
"database": "information_schema",
"port": 3306,
"is_ssl": 0,
"ssh_port": 22,
"ssh_login": "pmacontrol",
"is_sudo": 1,
"is_root": 0,
"is_monitored": 1,
"is_proxy": 0,
"is_vip": 0
}
مجالات مهمة
| المجال | الوصف |
|---|---|
id_client |
معرف العميل (المؤسسة) |
id_environment |
معرف البيئة (الإنتاج، التدريج، إلخ.) |
ip |
عنوان IP للوصول إلى الخادم MySQL |
port |
المنفذ MySQL (الافتراضي 3306) |
login / passwd |
MySQL معرفات المجموعة |
is_monitored |
1 = الإشراف النشط، 0 = معطل |
is_proxy |
1 إذا كان ProxySQL/MaxScale (يختبر الاتصال بشكل مختلف) |
is_vip |
1 إذا كان VIP/DNS (لا يوجد اتصال مباشر، متبوعًا بإعادة التوجيه) |
أنشئ التبعيات أولاً
قبل إضافة خادم، يجب أن يكون العميل والبيئة موجودين.
إنشاء عميل
curl -s -X POST http://pmacontrol.local/fr/api/config/clients \
-H "Content-Type: application/json" \
-d '{"name": "68Koncept", "description": "Production infrastructure"}'
خلق بيئة
curl -s -X POST http://pmacontrol.local/fr/api/config/environments \
-H "Content-Type: application/json" \
-d '{"name": "Production", "description": "Live servers"}'
إضافة مفتاح SSH
curl -s -X POST http://pmacontrol.local/fr/api/config/ssh-keys \
-H "Content-Type: application/json" \
-d '{"name": "deploy-key", "private_key": "-----BEGIN RSA PRIVATE KEY-----\n..."}'
إكمال البرنامج النصي للإضافة المجمعة
#!/bin/bash
PMAC="http://pmacontrol.local"
CLIENT_ID=1
ENV_ID=1
SERVERS=(
"prod-db-01:10.68.68.100:3306"
"prod-db-02:10.68.68.101:3306"
"prod-db-03:10.68.68.102:3306"
"prod-proxy-01:10.68.68.200:6033"
)
for entry in "${SERVERS[@]}"; do
IFS=: read -r name ip port <<< "$entry"
is_proxy=0
[[ "$name" == *proxy* ]] && is_proxy=1
curl -s -X POST "$PMAC/fr/api/config/servers" \
-H "Content-Type: application/json" \
-d "{
\"id_client\": $CLIENT_ID,
\"id_environment\": $ENV_ID,
\"name\": \"$name\",
\"display_name\": \"$name\",
\"ip\": \"$ip\",
\"port\": $port,
\"login\": \"pmacontrol\",
\"passwd\": \"PmacMonitor2026\",
\"database\": \"information_schema\",
\"is_monitored\": 1,
\"is_proxy\": $is_proxy,
\"ssh_port\": 22,
\"ssh_login\": \"pmacontrol\"
}"
echo " → $name added"
done
قائمة الخوادم الموجودة
curl -s http://pmacontrol.local/fr/api/config/servers | jq '.[] | {id, name, ip, is_monitored}'
تحديث الخادم
PUT /fr/api/config/servers/{id}
curl -s -X PUT http://pmacontrol.local/fr/api/config/servers/5 \
-H "Content-Type: application/json" \
-d '{"is_monitored": 0}'
حذف الخادم
الحذف هو حذف بسيط (is_deleted = 1). يختفي الخادم من الواجهة ولكنه يظل في القاعدة:
curl -s -X DELETE http://pmacontrol.local/fr/api/config/servers/5
علامات لتنظيم خوادمك
تسمح لك العلامات بتصنيف الخوادم (مركز البيانات، الدور، الإصدار):
# Créer un tag
curl -s -X POST http://pmacontrol.local/fr/api/config/tags \
-H "Content-Type: application/json" \
-d '{"name": "dc-paris", "description": "Paris datacenter"}'
# Associer un tag à un serveur (via l'interface ou l'API)
التحقق بعد الإضافة
بعد الإضافة، يبدأ PmaControl تلقائيًا في جمع ما إذا كان is_monitored = 1. تحقق في الواجهة:
- يظهر الخادم في القائمة
Server > Main - تحديثات طوبولوجيا Dot3 في الدورة القادمة
- تصل المقاييس الأولى خلال 60 ثانية
مواصفات OpenAPI
PmaControl يوضح مواصفات OpenAPI الكاملة:
GET /fr/api/openApi
يمكن استخدامه مع Swagger UI أو لإنشاء عملاء SDK تلقائيًا.
الخلاصة
يقوم API REST لـ PmaControl بتحويل إضافة الخوادم من مهمة يدوية إلى عملية قابلة للبرمجة وقابلة للتكرار. بالاشتراك مع Ansible أو Terraform، فإنه يسمح باتباع نهج البنية التحتية كرمز لمراقبة MariaDB / MySQL.
تعليقات (0)
لا توجد تعليقات حتى الآن.
اترك تعليقا