مقدمه
در این آموزش، نحوه جمعآوری معیارهای قابل جمعآوری برای پایگاه داده PostgreSQL مدیریت شده در DigitalOcean با استفاده از یک برنامه وب مستقر در پلتفرم برنامه DigitalOcean را خواهید آموخت.
شما از یک نمونه برنامه Node.js برای این نمایش استفاده خواهید کرد و آن را به پایگاه داده Managed DigitalOcean PostgreSQL که در این آموزش ایجاد خواهید کرد وصل خواهید کرد.
در پایان این آموزش، یک داشبورد Prometheus خواهید داشت که معیارها را از یک پایگاه داده مدیریت شده PostgreSQL متصل به یک برنامه وب پلتفرم App را می خراشید و نمایش می دهد.
پیش نیازها
قبل از شروع، مطمئن شوید که پیش نیازهای زیر را دارید:
- یک حساب DigitalOcean.
- یک نمونه برنامه Node.js که بر روی App Platform مستقر شده است.
- پایگاه داده Postgres مستقر شده و به برنامه App Platform متصل شده است.
- یک نشانه دسترسی شخصی ایجاد شده با دسترسی خواندن/نوشتن(rw). می توانید با دنبال کردن این آموزش، نحوه ایجاد یک رمز دسترسی شخصی را دنبال کنید تا برای خود ایجاد کنید.
مرحله 1 – راه اندازی یک پایگاه داده مدیریت شده PostgreSQL
بیایید با ایجاد یک پایگاه داده PostgreSQL شروع کنیم.
به بخش پایگاه های داده در کنترل پنل ابری DigitalOcean خود بروید.
روی “Create Database Cluster” کلیک کنید و PostgreSQL را انتخاب کنید. همانطور که در تصویر زیر نشان داده شده است، باید یک منطقه مرکز داده و یک شبکه VPC را انتخاب کنید:
بعد، PostgreSQL را به عنوان پایگاه داده انتخاب کنید و تنظیمات دیگر را برای پایگاه داده خود انتخاب کنید.
تنظیمات پایگاه داده را پیکربندی کنید، دستورالعمل های روی صفحه را دنبال کنید و روی Create Database cluster کلیک کنید.
هنگامی که خوشه پایگاه داده مدیریت شده PostgreSQL ایجاد شد، می توانید نمای کلی، بینش، گزارش ها و همچنین تنظیمات آن را در برگه های زیر بررسی کنید:
مرحله 2 – استقرار یک نمونه برنامه وب Node.js در بستر برنامه
می توانید مراحل استقرار یک برنامه Sample Node.js را دنبال کنید یا از این مخزن github برای ایجاد یک برنامه نمونه Node.js در App Platform استفاده کنید.
اگر از دومی استفاده می کنید، باید این مخزن GitHub را در حساب Github خود فورک کنید تا یک نسخه در فضای ابری ذخیره شود. روی دکمه Fork در مخزن GitHub کلیک کنید و دستورالعمل های روی صفحه را دنبال کنید.
اکنون وارد پورتال ابری DigitalOcean شوید و به مسیر Create App -> App Platform بروید.
سپس، «سایر: برنامه نمونه را انتخاب کنید»، انتخاب برنامه نمونه Node.js را از منوی کشویی Sample App انتخاب کنید و روی Next کلیک کنید.
دستورالعمل های روی صفحه را دنبال کنید تا منابع برنامه، پیکربندی کلی و متغیرهای محیط را تنظیم کنید و روی Next کلیک کنید. پس از انجام، پیکربندی کلی برنامه را مرور کنید. پس از اتمام بر روی Create Resources کلیک کنید. پس از ایجاد برنامه، مدتی طول می کشد تا در پلتفرم برنامه مستقر شود.
پس از استقرار برنامه و ساخت آن انجام شد. می توانید نمای کلی برنامه را بررسی کنید و از برنامه مستقر شده در مرورگر خود بازدید کنید.
مرحله 3 – پایگاه داده PostgreSQL را به App Platform وصل کنید
در این مرحله، پایگاه داده مدیریت شده PostgreSQL ایجاد شده در مرحله 1 این آموزش را به نمونه برنامه Node.js ایجاد شده در Step-2 متصل می کنید.
به برنامه پلتفرم برنامه مستقر شده خود بروید، روی دکمه ایجاد در داشبورد برنامه مستقر خود کلیک کنید و روی «ایجاد/پیوست پایگاه داده» کلیک کنید:
سپس، «Previously Created DigitalOcean Database» را انتخاب کنید و خوشه پایگاه داده مدیریت شده PostgreSQL اخیراً مستقر شده را انتخاب کنید و روی دکمه «Attach Database» در پایین کلیک کنید.
میتوانید در بخش نمای کلی پایگاه داده تأیید کنید که برنامه پلتفرم برنامه با موفقیت بهعنوان منبع قابل اعتماد اضافه شده است.
مرحله 4 – معیارهای Scrapable را از نقطه پایانی /metrics دریافت کنید
شما می توانید به صورت برنامه نویسی معیارهای خوشه پایگاه داده خود را از طریق نقطه پایانی /metrics مشاهده کنید. این نقطه پایانی شامل بیش از بیست برابر معیارهایی است که می توانید در برگه Insights در کنترل پنل به آن دسترسی داشته باشید.
می توانید با دستور curl به نقطه پایانی متریک دسترسی پیدا کنید یا از Postman برای تجسم آن معیارها در سیستم نظارتی مانند Prometheus استفاده کنید.
اول از همه، به بخش API در کنترل پنل DigitalOcean بروید و یک توکن دسترسی شخصی جدید ایجاد کنید و روی Generate Token with Full Access کلیک کنید. لطفاً به نشانه دسترسی توجه کنید زیرا در مراحل زیر به آن نیاز دارید.
در این مثال، شما از Postman برای اجرای تمام درخواست های HTTP استفاده خواهید کرد. یا میتوانید دستورات curl را از نمونه برنامه پلتفرم App خود برای دریافت پاسخ به درخواستهای API اجرا کنید.
نام میزبان و پورت را دریافت کنید
ابتدا، باید با ارسال یک درخواست GET به https://api.digitalocean.com/v2/databases/{UUID}، نام میزبان معیارهای خوشه خود را بازیابی کنید.
دستور curl زیر را از نمونه برنامه پلتفرم App خود اجرا کنید. برای انجام این کار به بخش کنسول بروید:
از دستور زیر برای دریافت نام میزبان و اعتبار پایگاه داده استفاده کنید
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 تجسم کنید
برای دسترسی به نقطه پایانی با استفاده از Prometheus، پیکربندی زیر را در یک فایل prometheus.yml کپی کنید و نام میزبان، نام کاربری، رمز عبور و مسیر گواهی CA را جایگزین کنید. این پرومتئوس را پیکربندی می کند تا از تمام اعتبارنامه های لازم برای دسترسی به نقطه پایانی استفاده کند:
# 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 پرس و جو کنید.
برای جزئیات بیشتر، به اسناد پرومته DNS SD و اسناد پیکربندی TLS مراجعه کنید.
برای یادگیری و درک هر یک از معیارها، می توانید این سند رسمی آمار نظارت PostgreSQL را بررسی کنید.
همچنین میتوانید درباره نحوه جمعآوری معیارهای قابل خراش برای پایگاه داده مدیریتشده PostgreSQL اطلاعات بیشتری کسب کنید.
نتیجه
این آموزش به شما آموزش می دهد که چگونه معیارها را از پایگاه داده مدیریت شده PostgreSQL در DigitalOcean با استفاده از یک برنامه وب Node.js که در پلتفرم برنامه DigitalOcean و Prometheus مستقر شده است، تنظیم و خراش دهید. با فعال کردن معیارهای خراشپذیر، میتوانید به راحتی عملکرد و سلامت پایگاههای داده خود را نظارت کنید و از عملکرد بهینه و عیبیابی عمیق برای رفع هر گونه مشکل اطمینان حاصل کنید.