مدیریت و بهینهسازی عملکرد دیتابیس PostgreSQL بهخصوص وقتی با حجم زیادی از دادهها و کوئریهای پیچیده سروکار دارید، میتواند چالشبرانگیز باشد. اینجاست که ابزاری مانند pgHero به کمک شما میآید. اگر برایتان سوال است که pgHero چیست، باید گفت که یک داشبورد متنباز و قدرتمند برای نظارت بر سلامت و عملکرد دیتابیس PostgreSQL است. این ابزار به شما امکان مشاهده معیارهای کلیدی سیستم، وضعیت کوئریهای در حال اجرا، استفاده از ایندکسها و مشکلات احتمالی را بهصورت بصری و در یک محیط ساده فراهم میکند. در ادامه، کاملا متوجه میشوید که pgHero چیست و چطور باید آن را روی اوبونتو 20.04 نصب کرد.
pgHero چیست؟
pgHero یک ابزار متنباز برای مانیتورینگ و بهینهسازی پایگاه داده PostgreSQL است که توسط توسعهدهندگان برای سادهتر کردن مدیریت دیتابیس ساخته شده است. این ابزار در قالب یک داشبورد تحت وب ارائه میشود و به مدیران دیتابیس، توسعهدهندگان و تیمهای DevOps کمک میکند تا وضعیت عملکرد دیتابیس را در لحظه مشاهده کنند، مشکلات را سریعتر شناسایی نمایند و راهکارهای بهینهسازی را اجرا کنند.
یکی از مزیتهای اصلی pgHero سادگی در استفاده است. برخلاف بسیاری از ابزارهای پیچیده مانیتورینگ که نیاز به تنظیمات سنگین دارند، pgHero با حداقل پیکربندی راهاندازی میشود و بلافاصله امکان ردیابی کوئریهای کند، میزان مصرف منابع، تعداد کانکشنها و وضعیت ایندکسها را فراهم میآورد. همین موضوع باعث شده است که pgHero به انتخابی محبوب میان استارتاپها، شرکتهای نرمافزاری و حتی پروژههای بزرگ تبدیل شود.
این ابزار بهصورت مستقیم به دیتابیس PostgreSQL متصل میشود و دادههای لحظهای را نمایش میدهد. کاربران میتوانند از طریق رابط کاربری ساده و کاربرپسند آن، کوئریهایی را که بیشترین فشار را بر روی سیستم وارد میکنند شناسایی کنند و سپس تصمیم بگیرند که آیا باید ایندکس جدیدی اضافه کنند، کوئریها را بازنویسی کنند یا ساختار دیتابیس را تغییر دهند.
یکی دیگر از کاربردهای مهم pgHero، مانیتورینگ سلامت کلی پایگاه داده است. برای مثال، اگر تعداد کانکشنهای فعال بیش از حد شود یا حافظه بهطور غیرعادی مصرف گردد، pgHero هشدارهای لازم را به مدیران میدهد. به این ترتیب، تیمها میتوانند قبل از وقوع خطا یا کاهش شدید سرعت، اقدامات پیشگیرانه انجام دهند.
از نظر امنیتی، pgHero معمولاً بهعنوان یک ابزار داخلی درون شبکه سازمان نصب میشود و دسترسی به آن محدود به افراد مجاز است. همچنین از آنجا که این ابزار متنباز است، شرکتها میتوانند آن را مطابق نیازهای خاص خود سفارشیسازی کنند یا حتی قابلیتهای جدیدی به آن اضافه نمایند.
ویژگیهای اصلی pgHero چیست؟
pgHero مجموعهای از قابلیتهای کلیدی دارد که به مدیران دیتابیس و توسعهدهندگان کمک میکند تا PostgreSQL را سادهتر مدیریت کنند. این ویژگیها بیشتر بر مانیتورینگ، شناسایی گلوگاهها و بهینهسازی کوئریها تمرکز دارند. در ادامه، مهمترین ویژگیهای pgHero را بررسی میکنیم:
شناسایی کوئریهای کند
یکی از بزرگترین چالشهای PostgreSQL، کوئریهایی هستند که زمان زیادی برای اجرا مصرف میکنند و باعث کندی کل سیستم میشوند. pgHero بهطور خودکار کوئریهای کند را شناسایی کرده و در یک لیست مرتب به نمایش میگذارد. این لیست شامل زمان اجرای هر کوئری، تعداد دفعات اجرا و میزان منابع مصرفشده است. به کمک این قابلیت، مدیران دیتابیس میتوانند سریعاً متوجه شوند کدام کوئریها نیاز به بازنویسی یا ایندکسگذاری دارند. همچنین، با تحلیل همین دادهها امکان پیشبینی مشکلات آتی فراهم میشود. در عمل، این ویژگی کمک میکند که سرعت پاسخگویی سیستم افزایش یابد و تجربه کاربران بهبود پیدا کند.
مدیریت ایندکسها
ایندکسها نقشی کلیدی در سرعت جستجو و اجرای کوئریها دارند، اما استفاده بیش از حد یا نادرست از آنها میتواند منجر به کندی سیستم و افزایش مصرف فضای ذخیرهسازی شود. pgHero گزارشی جامع از ایندکسهای استفادهشده و بلااستفاده ارائه میدهد. این گزارش مشخص میکند کدام ایندکسها بیشترین کاربرد را دارند و کدامها صرفاً فضای دیسک را اشغال کردهاند. بر اساس این اطلاعات، تیمها میتوانند ایندکسهای غیرضروری را حذف کنند و تنها ایندکسهای بهینه را نگه دارند. نتیجهی این کار کاهش بار روی سیستم و افزایش کارایی دیتابیس است. به این ترتیب، pgHero ابزار مناسبی برای ایجاد تعادل میان سرعت و بهینگی منابع محسوب میشود.
مانیتورینگ سلامت دیتابیس
سلامت دیتابیس یکی از حیاتیترین موضوعات در هر پروژه نرمافزاری است. pgHero با داشبورد گرافیکی خود وضعیت کلی دیتابیس را در لحظه نمایش میدهد؛ از تعداد کانکشنهای فعال گرفته تا میزان مصرف حافظه و فضای دیسک. در صورت افزایش غیرعادی مصرف منابع، تیمها میتوانند قبل از وقوع مشکل جدی اقدامات لازم را انجام دهند. این ویژگی بهخصوص در محیطهای پرکاربر یا پروژههایی که نیاز به پایداری بالا دارند، بسیار ارزشمند است. داشتن یک دید کلی نسبت به سلامت سیستم باعث میشود مدیران بتوانند تصمیمات بهتری برای مقیاسپذیری، بهینهسازی و جلوگیری از قطعیهای احتمالی بگیرند.
پیشنیازهای نصب pgHero چیست؟
قبل از آنکه فرآیند اصلی نصب pghero روی لینوکس را شروع کنیم، لازم است مطمئن شوید که چند پیشنیاز اساسی فراهم است. این موارد پایه و اساس نصب pghero روی لینوکس هستند.
- یک سرور آماده: برای نصب pghero پیش از هر چیز، به یک سرور نیاز دارید که روی آن کار کنید. در این آموزش، ما از سرور مجازی لینوکس استفاده میکنیم که یکی از محبوبترین گزینهها برای توسعهدهندگان است.
- سیستمعامل بهروز: مطمئن شوید که روی سرور شما، لینوکس اوبونتو نسخه ۲۰.۰۴ نصب شده و بهروز است.
- دسترسی sudo: شما باید یک کاربر non-root با دسترسی sudo داشته باشید. اجرای دستورات با کاربر root به دلایل امنیتی، توصیه نمیشود.
مرحله ۱: نصب سرور PostgreSQL
ئس از این که متوجه شدیم که pgHero چیست و چگونه کار میکند، ابتدا باید بستری که روی آن نظارت میکند را فراهم کنیم. pgHero برای تحلیل و نمایش اطلاعات دیتابیس PostgreSQL طراحی شده، بنابراین اولین قدم عملی برای نصب pghero، نصب خود دیتابیس PostgreSQL است.
این فرآیند در لینوکس اوبونتو بسیار ساده است. ترمینال سرور خود را باز کنید و با استفاده از دستور زیر، بسته PostgreSQL (نسخه 12 که نسخه پیشفرض در اوبونتو 20.04 است) را از مخازن رسمی آن نصب کنید.
sudo apt -y install postgresql-12
پس از اتمام نصب، باید سرویس PostgreSQL را فعال کنیم. این کار به سیستمعامل دستور میدهد که پس از هر بار راهاندازی مجدد سرور، سرویس دیتابیس را بهصورت خودکار اجرا کند تا همیشه در دسترس باشد.
sudo systemctl enable postgresql
در نهایت، با دستور زیر سرویس را برای اولین بار بهصورت دستی اجرا میکنیم تا برای مراحل بعدی آماده باشد.
sudo systemctl start postgresql
مرحله ۲: ایجاد دیتابیس و کاربر جدید
پس از نصب موفقیت آمیز PostgreSQL، گام بعدی ایجاد یک محیط اختصاصی و امن برای pgHero است. به دلایل امنیتی، نباید ابزارهای نظارتی را به کاربر اصلی و مدیر دیتابیس متصل کنید. به همین دلیل، یک کاربر جدید و یک دیتابیس جدید ایجاد میکنیم و دسترسیهای لازم را فقط به آن کاربر میدهیم.
ابتدا، باید رمز عبور کاربر پیشفرض postgres را برای افزایش امنیت تغییر دهیم. با دستور زیر یک رمز عبور قوی برای این کاربر تعیین کنید.
sudo passwd postgres
حالا با استفاده از دستور su، به کاربر postgres لاگین میکنیم تا بتوانیم دستورات مربوط به مدیریت دیتابیس را اجرا کنیم.
su - postgres
اکنون که در محیط کاربری postgres هستیم، با دستور createuser یک کاربر جدید به نام dbuser میسازیم.
createuser dbuser
سپس وارد محیط تعاملی PostgreSQL یا همان psql میشویم تا بتوانیم دستورات SQL را اجرا کنیم.
psql
اولین کار در psql، انتخاب یک رمز عبور امن برای کاربر dbuser است. دستور زیر را اجرا و عبارت ReplaceThisWithASecurePassword را با یک رمز عبور قوی و منحصربهفرد جایگزین کنید.
ALTER USER dbuser WITH ENCRYPTED password 'ReplaceThisWithASecurePassword';
در ادامه، یک دیتابیس جدید به نام dbname ایجاد کرده و مالکیت آن را به dbuser واگذار میکنیم.
CREATE DATABASE dbname OWNER dbuser;
و در نهایت، تمام دسترسیهای لازم برای مدیریت دیتابیس dbname را به کاربر dbuser میدهیم.
GRANT ALL PRIVILEGES ON DATABASE dbname to dbuser;
کار ما در محیط psql تمام شده است. با دستور \q از آن خارج شوید.
\q
در آخر، با دستور exit از محیط کاربری postgres نیز خارج شده و به حساب کاربری اصلی خود (کاربر non-root با دسترسی sudo) بازگردید.
exit
اکنون یک دیتابیس و کاربر مجزا و آماده برای استفاده pgHero دارید. ایجاد کاربر و دیتابیس مجزا نهتنها امنیت را افزایش میدهد، بلکه مدیریت این توزیع لینوکس را نیز برای شما سادهتر میکند.
مرحله ۳: نصب pgHero
اکنون که سرور دیتابیس PostgreSQL آماده است و کاربر و دیتابیس مخصوص را هم ایجاد کردهایم، به سراغ نصب pghero میرویم. به توجه به اینکه pgHero در مخازن پیشفرض اوبونتو موجود نیست، باید مخزن رسمی آن را به سیستم خود اضافه کنیم تا بتوانیم بسته را با استفاده از ابزار apt
نصب کنیم.
اولین قدم، بهروزرسانی لیست بستههای سیستم برای اطمینان از هماهنگی با آخرین تغییرات است.
sudo apt update
در گام بعدی، باید کلید GPG مخزن pgHero را دانلود و به سیستم اضافه کنیم. این کلید یک امضای دیجیتال است که اصالت بستههای نرمافزاری را تایید میکند. این کار تضمین میکند که بستهای که نصب میکنید، کاملا امن و توسط توسعهدهندگان اصلی pgHero ارائه شده است.
wget -qO- https://dl.packager.io/srv/pghero/pghero/key | sudo apt-key add -
دستور زیر، فایل مخزن pghero را به سیستم اضافه میکند.
sudo wget -O /etc/apt/sources.list.d/pghero.list https://dl.packager.io/srv/pghero/pghero/master/installer/ubuntu/$(. /etc/os-release && echo $VERSION_ID).repo
با توجه به اینکه یک مخزن جدید به سیستم اضافه کردهایم، باید یک بار دیگر لیست بستهها را بهروزرسانی کنیم تا apt از وجود بستههای جدید در این مخزن مطلع شود.
sudo apt update
در نهایت، همه چیز برای فرآیند اصلی نصب pghero روی لینوکس آماده است. با دستور ساده زیر این کار را انجام دهید.
sudo apt -y install pghero
پس از اجرای این دستور، pgHero روی سیستم شما نصب میشود. اما برای اینکه بتواند کار کند، باید آن را پیکربندی کرده و به دیتابیسی که در مرحله قبل ساختیم، متصل کنیم.
مرحله ۴: پیکربندی pgHero
در این مرحله، pgHero را پیکربندی میکنیم تا به دیتابیس متصل شود و سپس آن را بهعنوان یک سرویس دائمی در پسزمینه اجرا میکنیم. این مرحله بهصورت عملی نشان میدهد که pgHero چیست.
اتصال به دیتابیس
مهمترین بخش پیکربندی، معرفی آدرس دیتابیس به pgHero است. این کار با تنظیم متغیر DATABASE_URL انجام میشود. دستور زیر را با دقت ویرایش و اجرا کنید:
sudo pghero config:set DATABASE_URL=postgres://dbuser:SecurePassword@localhost:5432/dbname
مقادیر زیر را جایگزین کنید:
dbuser
: نام کاربری که در مرحله ۲ ساختید.SecurePassword
: رمز عبوری که برای dbuser تنظیم کردید.localhost
: اگر دیتابیس روی همین سرور است، این مقدار را تغییر ندهید.dbname
: نام دیتابیسی که در مرحله ۲ ایجاد کردید.
تنظیمات وب سرور
در ادامه، چند پارامتر مربوط به وب سرور داخلی pgHero را تنظیم میکنیم.
# پورت اجرایی وب سرور را روی ۳۰۰۱ تنظیم میکنیم sudo pghero config:set PORT=3001 # لاگهای اپلیکیشن را به جای خروجی استاندارد، در فایل ذخیره میکنیم sudo pghero config:set RAILS_LOG_TO_STDOUT=disabled # یک نمونه از پروسه وب را برای اجرا تخصیص میدهیم sudo pghero scale web=1
مدیریت سرویس pgHero
اکنون که پیکربندی کامل شد، سرویس pgHero را با استفاده از systemctl مدیریت میکنیم.
ابتدا سرویس را اجرا میکنیم تا تنظیمات جدید اعمال شوند.
sudo systemctl start pghero
وضعیت سرویس را بررسی میکنیم تا مطمئن شویم که بدون خطا در حال اجراست.
sudo systemctl status pghero
در خروجی این دستور باید عبارت active (running) را به رنگ سبز مشاهده کنید.
در نهایت، سرویس را فعال میکنیم تا مانند PostgreSQL، پس از هر بار راهاندازی مجدد سرور، بهصورت خودکار اجرا شود.
sudo systemctl enable pghero
تنظیمات فایروال
اگر فایروال UFW روی سرور شما فعال است، باید پورتهای مورد نیاز را باز کنید. پورت 3001 برای دسترسی مستقیم به pgHero و پورت 80 برای مرحله بعدی (راهاندازی پراکسی معکوس) استفاده خواهد شد.
sudo ufw allow 3001/tcp sudo ufw allow 80/tcp
در این لحظه، فرآیند نصب pghero و پیکربندی اولیه آن تمام شده است. شما باید بتوانید با وارد کردن آدرس http://Server_IP:3001 در مرورگر خود، داشبورد pgHero را مشاهده کنید.
مرحله ۵: راهاندازی پراکسی معکوس با Nginx
در حال حاضر، برای دسترسی به pgHero باید شماره پورت 3001 را در انتهای آدرس IP وارد کنید. این کار هم ظاهر آدرس را نامناسب میکند و هم بهخاطر سپردن آن سخت است. هدف این مرحله، حذف شماره پورت از آدرس است تا بتوانید بهسادگی و فقط با وارد کردن IP یا دامنه، به داشبورد دسترسی داشته باشید.
برای این منظور، از وبسرور Nginx بهعنوان یک پراکسی معکوس استفاده میکنیم. پراکسی معکوس را میتوان مانند یک راهنما یا اپراتور در نظر گرفت. وقتی درخواستی به آدرس اصلی سرور شما (مثلا http://Your_IP) میرسد، Nginx آن را دریافت کرده و بهصورت خودکار به آدرس داخلی pgHero (http://localhost:3001) هدایت میکند. در نتیجه، کاربران میتوانند تنها با وارد کردن آدرس IP یا نام دامنه سرور، به داشبورد دسترسی پیدا کنند.
نصب Nginx
اگر Nginx روی سرور شما نصب نیست، با دستور زیر آن را نصب کنید.
sudo apt install -y nginx
پیکربندی Nginx برای pgHero
ابتدا، فایل پیکربندی پیشفرض Nginx را غیرفعال میکنیم تا با تنظیمات ما تداخل نداشته باشد.
sudo unlink /etc/nginx/sites-enabled/default
سپس، یک فایل پیکربندی جدید برای pgHero با استفاده از ویرایشگر nano (یا هر ویرایشگر دیگری که ترجیح میدهید) ایجاد میکنیم.
sudo nano /etc/nginx/sites-available/pghero.conf
محتویات زیر را در این فایل کپی کرده و جایگذاری کنید. اگر قصد دارید از دامنه برای دسترسی به pgHero استفاده کنید، example.com را با نام دامنه خود جایگزین کنید. در غیر این صورت، میتوانید خط server_name را حذف کنید یا آن را به _ تغییر دهید تا به همه درخواستهای ورودی پاسخ دهد.
server { listen 80; server_name example.com; location / { proxy_pass http://localhost:3001; } }
پس از ذخیره کردن فایل و خروج از ویرایشگر (در nano با Ctrl+X، سپس Y و Enter)، باید این فایل پیکربندی جدید را با ایجاد یک Symlink فعال کنیم.
sudo ln -s /etc/nginx/sites-available/pghero.conf /etc/nginx/sites-enabled/pghero.conf
در نهایت، برای اعمال تمام تغییرات، سرویس Nginx را مجددا راهاندازی میکنیم.
sudo service nginx restart
اکنون میتوانید بدون نیاز به وارد کردن شماره پورت، مستقیما با آدرس IP سرور خود (مثلا http://192.0.2.11) یا دامنهای که تنظیم کردهاید، به داشبورد pgHero دسترسی داشته باشید.
جمعبندی
در این مطلب به بررسی این که pgHero چیست پرداختیم و با نحوه نصب این داشبورد مدیریت دیتابیس روی اوبونتو 20.04 آشنا شدیم. با طی کردن مراحل نصب pgHero، یک داشبورد آمادهبهکار و عملیاتی بهدست میآورید. این پلتفرم قدرتمند به شما دید عمیقی از وضعیت عملکرد دیتابیس PostgreSQL میدهد و به ابزاری کلیدی برای بهینهسازی و مدیریت آن تبدیل میشود. pgHero از طریق یک کاربر اختصاصی به دیتابیس شما متصل میشود تا امنیت و ایزوله بودن اتصال تضمین شود.