مدیریت زیرساخت رو به مجیک وی ام بسپار؛ از استقرار تا مانیتورینگ، سریع، هوشمند، و بهینه.

مدیریت زیرساخت رو به مجیک وی ام بسپار؛ از استقرار تا مانیتورینگ، سریع، هوشمند، و بهینه.

آموزش نصب Prometheus

آموزش نصب Prometheus؛ از صفر تا راه‌اندازی در محیط‌های کلاد و DevOps

آموزش نصب Prometheus یکی از اولین گام‌ها برای ساخت یک سیستم مانیتورینگ حرفه‌ای در زیرساخت‌های ابری، محیط‌های DevOps و سرورهای مدرن است. اگر به‌عنوان مدیر سیستم، DevOps Engineer یا مدیر IT به دنبال ساخت یک پلتفرم مانیتورینگ پایدار، مقیاس‌پذیر و خودکار هستید، آشنایی با Prometheus و نحوه نصب آن روی سرور لینوکسی، داکر و در کنار ابزارهایی مثل Grafana و Alertmanager، یک مهارت کلیدی محسوب می‌شود.

در این مقاله به صورت گام‌به‌گام ، مراحل نصب Prometheus، معرفی مفاهیم پایه، راه‌اندازی Node Exporter، نحوه پیکربندی اولیه، اتصال به Grafana و نکات عملی برای استفاده در محیط‌های Production را مرور می‌کنیم. همچنین اشاره می‌کنیم که چگونه پلتفرم‌هایی مانند MagicVM می‌توانند این فرآیند را ساده، خودکار و قابل اعتماد کنند.

Prometheus چیست و چرا برای DevOps مهم است؟

Prometheus یک سیستم مانیتورینگ و جمع‌آوری متریک متن‌باز است که ابتدا توسط تیم مهندسی SoundCloud توسعه داده شد و امروز به‌عنوان بخشی از اکوسیستم Cloud Native Computing Foundation شناخته می‌شود. Prometheus داده‌ها را به صورت time-series ذخیره می‌کند، یعنی هر متریک با برچسب‌های مختلف (Labels) در طول زمان ثبت می‌شود. این معماری باعث می‌شود بتوانید به‌راحتی وضعیت سرورها، سرویس‌ها، کانتینرها و حتی اپلیکیشن‌ها را در سطح بسیار دقیق مشاهده و تحلیل کنید.

دلایلی که Prometheus را برای تیم‌های DevOps و مدیران سیستم جذاب می‌کند:

  • نصب و راه‌اندازی نسبتا ساده روی انواع سرورهای لینوکسی و محیط‌های کلاد
  • عدم وابستگی به پایگاه‌داده خارجی؛ Prometheus دیتابیس time-series داخلی خودش را دارد
  • مدل pull-based برای جمع‌آوری متریک‌ها (اسکرپ کردن Endpointها)
  • پشتیبانی گسترده از Exporterها برای انواع سرویس‌ها (Linux, MySQL, Nginx, Kubernetes و غیره)
  • قابلیت کوئری‌نویسی قدرتمند با زبان PromQL برای تحلیل داده‌ها
  • ادغام ساده با Grafana برای ساخت داشبوردهای دیداری حرفه‌ای

در کنار این مزایا، Prometheus به‌طور خاص با فلسفه DevOps، زیرساخت ابری و معماری مایکروسرویس هم‌خوانی دارد و به شما کمک می‌کند تصویر یکپارچه‌ای از سلامت و عملکرد سرویس‌هایتان داشته باشید.

پیش‌نیازهای نصب Prometheus

قبل از شروع آموزش نصب Prometheus بهتر است نگاهی به پیش‌نیازها داشته باشیم تا هنگام اجرا با خطا یا توقف غیرمنتظره مواجه نشوید.

پیش‌نیازهای عمومی

  • دسترسی به یک سرور یا ماشین مجازی مبتنی بر لینوکس (ترجیحا Ubuntu یا Debian یا CentOS)
  • دسترسی SSH و کار با ترمینال
  • دسترسی کاربر با سطح sudo برای نصب و مدیریت سرویس‌ها
  • اتصال شبکه پایدار بین Prometheus و سرورهایی که قرار است مانیتور شوند

پیش‌نیازهای نرم‌افزاری

  • نصب بودن ابزارهای پایه مانند curl یا wget برای دانلود باینری‌ها
  • در صورت استفاده از Docker، نصب Docker Engine و در صورت نیاز Docker Compose
  • باز بودن پورت‌های مورد نیاز مانند 9090 برای Prometheus و 9100 برای Node Exporter

در پلتفرم‌هایی مثل MagicVM، بسیاری از این پیش‌نیازها در قالب ایمیج‌های آماده، تمپلیت‌های سرور و اسکریپت‌های اتوماسیون از پیش فراهم شده‌اند تا فرایند راه‌اندازی مانیتورینگ به حداقل زمان ممکن برسد.

دانلود و نصب Prometheus به صورت باینری روی لینوکس

یکی از رایج‌ترین روش‌های نصب Prometheus، استفاده از باینری رسمی آن است که در سایت اصلی Prometheus منتشر می‌شود. این روش برای محیط‌های Production روی سرورهای Bare-metal یا ماشین‌های مجازی بسیار متداول است.

گام اول دانلود باینری Prometheus

ابتدا به سرور خود SSH بزنید و در یک دایرکتوری مناسب (مثلا /opt یا /usr/local/src) قرار بگیرید. سپس آخرین نسخه Prometheus را از سایت رسمی دانلود کنید. معمولا نام فایل چیزی شبیه این است:

به جای <version>، نسخه فعلی را قرار دهید. پس از دانلود، فایل را از حالت فشرده خارج کنید:

در این دایرکتوری، فایل‌های زیر را مشاهده می‌کنید:

  • باینری prometheus
  • باینری promtool
  • فایل پیکربندی پیش‌فرض prometheus.yml
  • دایرکتوری‌های console و console_libraries

گام دوم ساخت کاربر و دایرکتوری‌های سرویس

برای اجرای امن‌تر Prometheus، بهتر است یک کاربر اختصاصی بدون امکان لاگین بسازید:

سپس دایرکتوری‌هایی برای نگهداری داده‌ها و فایل‌های پیکربندی ایجاد کنید:

حالا فایل‌های باینری را به مسیرهای استاندارد سیستم منتقل کنید:

سپس فایل پیکربندی و کنسول‌ها را کپی کنید:

در پایان، مالکیت دایرکتوری‌ها را به کاربر prometheus بدهید:

گام سوم تنظیم سرویس systemd برای Prometheus

برای اینکه Prometheus به عنوان سرویس سیستم‌عامل اجرا شود و پس از ریبوت هم بالا بیاید، باید یک واحد سرویس (unit) در systemd بسازید. فایل زیر را در مسیر /etc/systemd/system/prometheus.service ایجاد کنید:

بعد از ذخیره فایل، دستورات زیر را اجرا کنید تا سرویس فعال شود:

برای اطمینان از وضعیت سرویس:

اگر همه چیز درست باشد، باید وضعیت active (running) را مشاهده کنید.

گام چهارم تست دسترسی به رابط وب Prometheus

مرورگر خود را باز کنید و به آدرس زیر بروید (در صورت نیاز آدرس را با IP سرور جایگزین کنید):

در این صفحه، رابط وب Prometheus را مشاهده می‌کنید که امکان جستجوی متریک‌ها، اجرای کوئری PromQL و مشاهده وضعیت Targetها را فراهم می‌کند.

آموزش نصب Node Exporter برای مانیتورینگ سرور

Prometheus برای جمع‌آوری متریک‌ها به Exporterها متکی است. برای مانیتورینگ سیستم‌عامل و منابع سرور (CPU، RAM، Disk، Network) از Node Exporter استفاده می‌شود. نصب Node Exporter روی همان سروری که Prometheus روی آن قرار دارد یا روی سایر سرورها، یک الگوی مرسوم در زیرساخت‌های ابری و محیط‌های DevOps است.

دانلود و نصب Node Exporter

مثل Prometheus، Node Exporter هم به صورت باینری لینوکسی ارائه می‌شود. روی سروری که می‌خواهید مانیتور کنید، مراحل زیر را انجام دهید:

یک کاربر اختصاصی برای Node Exporter بسازید:

باینری را به مسیر استاندارد منتقل کنید:

ساخت سرویس systemd برای Node Exporter

فایل /etc/systemd/system/node_exporter.service را ایجاد کنید و محتوای زیر را در آن قرار دهید:

سپس:

به صورت پیش‌فرض، Node Exporter روی پورت 9100 گوش می‌دهد. می‌توانید با مرورگر یا curl آن را تست کنید:

افزودن Node Exporter به تنظیمات Prometheus

برای اینکه Prometheus متریک‌های Node Exporter را جمع‌آوری کند، باید فایل /etc/prometheus/prometheus.yml را ویرایش کنید و یک job جدید به قسمت scrape_configs اضافه کنید. مثال ساده:

اگر Node Exporter روی سرور دیگری اجرا می‌شود، آدرس IP آن سرور را به جای localhost قرار دهید. پس از ویرایش فایل، سرویس Prometheus را ریستارت کنید:

اکنون در رابط وب Prometheus، در بخش Status و زیرمنوی Targets باید job با نام node و وضعیت UP را مشاهده کنید.

آموزش نصب Prometheus با Docker و Docker Compose

در محیط‌های Cloud Native و زیرساخت‌های مدرن، استفاده از Docker و Docker Compose برای استقرار سرویس‌هایی مثل Prometheus بسیار متداول است. این روش به‌خصوص برای تیم‌های DevOps که به CICD، Infrastructure as Code و اتوماسیون علاقه‌مند هستند، مزیت‌های زیادی دارد.

پیش‌نیازها برای نصب با Docker

  • نصب Docker Engine روی سرور
  • در صورت نیاز، نصب Docker Compose
  • فضای کافی روی دیسک برای ذخیره داده‌های Prometheus

نمونه فایل docker-compose برای Prometheus و Node Exporter

یک دایرکتوری جدید برای استقرار Prometheus ایجاد کنید، مثلا /opt/monitoring، و در آن یک فایل docker-compose.yml بسازید. نمونه ساده:

در این مثال:

  • Prometheus روی پورت 9090 سیستم میزبان در دسترس است
  • فایل پیکربندی prometheus.yml از دایرکتوری جاری mount شده است
  • داده‌ها در volume به نام prometheus_data ذخیره می‌شوند
  • Node Exporter با network_mode برابر host اجرا می‌شود تا مستقیما متریک‌های سیستم میزبان را ارائه دهد

ساخت فایل پیکربندی prometheus.yml در محیط Docker

در همان دایرکتوری docker-compose.yml یک فایل prometheus.yml ایجاد کنید. مثال:

در سرورهای لینوکسی، بسته به تنظیمات Docker، ممکن است لازم باشد آدرس Node Exporter را IP میزبان تنظیم کنید. اگر Node Exporter هم در Docker و با network_mode برابر host اجرا شده باشد، Prometheus می‌تواند از طریق IP سرور و پورت 9100 به آن متصل شود.

راه‌اندازی سرویس‌ها با Docker Compose

در دایرکتوری پروژه، دستور زیر را اجرا کنید:

سپس با دستور زیر وضعیت کانتینرها را بررسی کنید:

اگر کانتینرها در حال اجرا باشند، رابط وب Prometheus از طریق پورت 9090 در دسترس خواهد بود. با مراجعه به بخش Targets می‌توانید وضعیت jobهای prometheus و node را بررسی کنید.

اتصال Prometheus به Grafana برای داشبوردهای حرفه‌ای

Prometheus داده‌ها را به صورت عددی و در قالب time-series ذخیره می‌کند. برای دیدن این داده‌ها به شکلی قابل‌فهم و تجاری، Grafana گزینه‌ای ایده‌آل است. در بسیاری از مجموعه‌ها، ترکیب Grafana، Prometheus و Node Exporter هسته سیستم مانیتورینگ سرور و زیرساخت را تشکیل می‌دهد.

نصب Grafana و تنظیم Data Source

پس از نصب Grafana (چه به صورت باینری، چه با Docker یا استفاده از پلتفرم‌های آماده)، مراحل زیر را انجام می‌دهید:

  • ورود به پنل وب Grafana
  • رفتن به بخش تنظیمات Data Sources
  • انتخاب Prometheus به‌عنوان نوع منبع داده
  • وارد کردن آدرس Prometheus، مثلا http://prometheus:9090 یا آدرس IP سرور
  • ذخیره و تست اتصال

پس از اتصال موفق، می‌توانید داشبوردهای آماده برای Node Exporter و انواع سرویس‌ها را از گالری Grafana ایمپورت کنید. این داشبوردها مجموعه‌ای از گراف‌ها، جدول‌ها و آلارم‌ها را در اختیار شما قرار می‌دهند تا وضعیت سرورها و سرویس‌ها را به صورت Real-time دنبال کنید.

نکات عملی برای مدیران سیستم و DevOps Engineerها

آموزش نصب Prometheus تنها آغاز کار است. استفاده موثر از آن در محیط‌های Production نیاز به رعایت چند نکته مهم دارد که در ادامه به صورت کاربردی به آن‌ها اشاره می‌کنیم.

طراحی ساختار jobها و targetها

  • برای هر نوع سرویس (مثلا وب‌سرور، دیتابیس، سرویس API) یک job جداگانه تعریف کنید
  • از برچسب‌ها (Labels) برای مشخص کردن محیط‌ها (prod, staging, dev) و منطقه جغرافیایی (region) استفاده کنید
  • نام‌گذاری استاندارد متریک‌ها و jobها باعث می‌شود کوئری‌نویسی با PromQL ساده‌تر شود

مدیریت طول عمر داده‌ها و حجم دیسک

Prometheus داده‌ها را به صورت فشرده روی دیسک ذخیره می‌کند، اما در محیط‌های بزرگ، حجم ذخیره‌سازی به‌سرعت افزایش می‌یابد. برای مدیریت بهتر:

  • پارامتر retention.time را تنظیم کنید تا مدت نگه‌داری داده‌ها مشخص شود (مثلا 15 روز یا 30 روز)
  • دوره تناسب بین نیاز کسب‌وکار به داده تاریخی و هزینه ذخیره‌سازی را بررسی کنید
  • در صورت نیاز، از remote_write برای ارسال داده‌ها به یک سیستم ذخیره‌سازی طولانی‌مدت استفاده کنید

راه‌اندازی Alerting و ادغام با سیستم‌های اعلام هشدار

Prometheus به‌خودی‌خود داده‌ها را جمع‌آوری می‌کند، اما برای اعلان هشدار به ابزار مکملی به نام Alertmanager نیاز دارید. ساختن Ruleهای هشدار (Rules) بر پایه متریک‌ها و کوئری‌های PromQL به شما این امکان را می‌دهد که:

  • در صورت افزایش غیرمعمول استفاده از CPU یا RAM هشدار دریافت کنید
  • در صورت Down شدن یک سرویس یا سرور، اعلان فوری داشته باشید
  • هشدارها را به Slack، ایمیل، PagerDuty و سایر ابزارها ارسال کنید

در محیط‌هایی که زیرساخت ابری و سرویس‌ها به‌طور پویا scale می‌شوند، طراحی هوشمندانه آلارم‌ها اهمیت زیادی دارد تا از ایجاد هشدارهای کاذب جلوگیری شود.

امنیت دسترسی به Prometheus

رابط وب Prometheus به صورت پیش‌فرض بدون احراز هویت در دسترس است. در محیط‌های Production، چند اقدام امنیتی توصیه می‌شود:

  • محدود کردن دسترسی به پورت 9090 در سطح فایروال
  • قرار دادن Prometheus پشت یک Reverse Proxy مانند Nginx و فعال‌سازی احراز هویت
  • استفاده از HTTPS برای جلوگیری از شنود ترافیک

در پلتفرم‌هایی مانند MagicVM، این کارها می‌توانند از طریق Templateهای آماده، اسکریپت‌های Ansible یا ماژول‌های اتوماسیون زیرساختی انجام شوند تا خطای انسانی کاهش یابد.

اتوماتیک‌سازی نصب Prometheus در مقیاس بالا

وقتی تعداد سرورها و سرویس‌ها زیاد می‌شود، نصب دستی Prometheus، Node Exporter و تنظیم Targetها عملا غیرقابل مدیریت خواهد شد. در اینجا استفاده از ابزارهای زیر پیشنهاد می‌شود:

  • استفاده از ابزارهای Configuration Management مانند Ansible، Puppet یا Chef برای نصب خودکار
  • استفاده از Infrastructure as Code مانند Terraform برای تعریف سرورها و سرویس‌های مانیتورینگ
  • به‌کارگیری امکانات MagicVM برای ساخت Template سرورهای مانیتورینگ، اسکریپت‌های راه‌انداز و ادغام با سایر سرویس‌های کلاد

با این رویکرد، هر بار که یک سرور جدید در زیرساخت ابری ایجاد می‌شود، Prometheus و Exporterهای مورد نیاز نیز به صورت خودکار نصب و به سیستم مانیتورینگ اضافه می‌شوند.

نقش MagicVM در ساده‌سازی نصب و مدیریت Prometheus

تا اینجا تمرکز بر روی آموزش نصب Prometheus به صورت دستی و با Docker بود. اما در محیط‌های واقعی، سازمان‌ها به چیزی فراتر از نصب نیاز دارند: مدیریت، مقیاس‌پذیری، امنیت، یکپارچگی با سایر سرویس‌ها و اتوماسیون کامل.

در این بخش توضیح می‌دهیم چطور خدماتی مانند MagicVM می‌توانند روند راه‌اندازی و بهره‌برداری از Prometheus را برای تیم‌های DevOps و مدیران IT تسهیل کنند.

زیرساخت ابری بهینه برای مانیتورینگ

Prometheus برای عملکرد پایدار نیاز به زیرساختی با دسترسی شبکه پایدار، دیسک سریع و تنظیمات مناسب دارد. MagicVM با ارائه سرورهای ابری بهینه‌شده برای بارهای کاری مانیتورینگ، کمک می‌کند:

  • سرورهای مانیتورینگ با منابع محاسباتی و ذخیره‌سازی متناسب انتخاب شوند
  • شبکه بین سرورهای اپلیکیشن و سرور مانیتورینگ پایدار و کم‌تاخیر باشد
  • مقیاس‌پذیری عمودی و افقی برای افزایش ظرفیت Prometheus و Exporterها فراهم شود

    با این روش، به جای صرف زمان برای نصب دستی و تکراری، تیم‌ها می‌توانند روی تحلیل داده‌ها و بهبود عملکرد سیستم تمرکز کنند.

    مدیریت هوشمند سرورها با بهره‌گیری از هوش مصنوعی

    یکی از مزیت‌های زیرساخت‌های مدرن، امکان استفاده از هوش مصنوعی برای تحلیل داده‌های مانیتورینگ است. Prometheus حجم عظیمی از متریک‌ها را تولید می‌کند که می‌توانند برای:

    • تشخیص الگوهای غیرعادی مصرف منابع
    • پیش‌بینی ظرفیت مورد نیاز در آینده
    • پیشنهاد بهینه‌سازی تنظیمات سرور، پایگاه‌داده و سرویس‌ها

    مورد استفاده قرار گیرند. MagicVM با تمرکز بر مدیریت هوشمند زیرساخت، می‌تواند داده‌های جمع‌آوری شده توسط Prometheus را در مدل‌های تحلیلی و الگوریتم‌های هوش مصنوعی پردازش کند و خروجی را به شکل پیشنهادهای عملی برای تیم‌های فنی ارائه دهد.

    مانیتورینگ یکپارچه در زیرساخت‌های ترکیبی

    بسیاری از سازمان‌ها ترکیبی از سرورهای On-premise، ماشین‌های مجازی در چند ارائه‌دهنده کلاد و کانتینرها را به صورت هم‌زمان استفاده می‌کنند. در چنین محیطی:

    • نصب و مدیریت چندین Prometheus در نواحی مختلف ضروری می‌شود
    • نیاز به تجمیع داده‌ها و ساخت داشبوردهای یکپارچه به‌وجود می‌آید

    MagicVM می‌تواند به‌عنوان لایه مدیریت مرکزی برای استقرار و مدیریت این مجموعه عمل کرده و با استفاده از اتوماسیون DevOps و زیرساخت ابری خود، راهکارهایی برای:

    • استانداردسازی نصب Prometheus در همه محیط‌ها
    • مدیریت نسخه‌ها و به‌روزرسانی‌ها
    • اتصال به Grafana و سایر ابزارهای Visualization

    ارائه دهد.

     

    برای دریافت مشاوره تخصصی درباره طراحی و پیاده‌سازی سیستم مانیتورینگ با Prometheus و Grafana در زیرساخت ابری، یا برای استفاده از سرورهای بهینه‌شده و راهکارهای اتوماسیون MagicVM، همین حالا با ما تماس بگیرید یا درخواست خود را از طریق وب‌سایت MagicVM ثبت کنید. با کمک ما، مانیتورینگ سرورهای شما از یک کار دستی و زمان‌بر، به یک فرایند خودکار، هوشمند و قابل اعتماد تبدیل خواهد شد.

    نوشته های مرتبط