
آموزش نصب 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 را از سایت رسمی دانلود کنید. معمولا نام فایل چیزی شبیه این است:
1 2 | wget https://github.com/prometheus/prometheus/releases/download/<version>/prometheus-<version>.linux-amd64.tar.gz |
به جای <version>، نسخه فعلی را قرار دهید. پس از دانلود، فایل را از حالت فشرده خارج کنید:
1 2 3 | tar xvfz prometheus-*.linux-amd64.tar.gz cd prometheus-*.linux-amd64 |
در این دایرکتوری، فایلهای زیر را مشاهده میکنید:
- باینری prometheus
- باینری promtool
- فایل پیکربندی پیشفرض prometheus.yml
- دایرکتوریهای console و console_libraries
گام دوم ساخت کاربر و دایرکتوریهای سرویس
برای اجرای امنتر Prometheus، بهتر است یک کاربر اختصاصی بدون امکان لاگین بسازید:
1 2 | sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus |
سپس دایرکتوریهایی برای نگهداری دادهها و فایلهای پیکربندی ایجاد کنید:
1 2 3 | sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus |
حالا فایلهای باینری را به مسیرهای استاندارد سیستم منتقل کنید:
1 2 3 | sudo cp prometheus /usr/local/bin/ sudo cp promtool /usr/local/bin/ |
سپس فایل پیکربندی و کنسولها را کپی کنید:
1 2 3 4 | sudo cp -r consoles /etc/prometheus/ sudo cp -r console_libraries /etc/prometheus/ sudo cp prometheus.yml /etc/prometheus/ |
در پایان، مالکیت دایرکتوریها را به کاربر prometheus بدهید:
1 2 3 4 5 | sudo chown -R prometheus:prometheus /etc/prometheus sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool sudo chown -R prometheus:prometheus /var/lib/prometheus |
گام سوم تنظیم سرویس systemd برای Prometheus
برای اینکه Prometheus به عنوان سرویس سیستمعامل اجرا شود و پس از ریبوت هم بالا بیاید، باید یک واحد سرویس (unit) در systemd بسازید. فایل زیر را در مسیر /etc/systemd/system/prometheus.service ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [Unit] Description=Prometheus Monitoring Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus \ --web.listen-address=0.0.0.0:9090 \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries Restart=on-failure [Install] WantedBy=multi-user.target |
بعد از ذخیره فایل، دستورات زیر را اجرا کنید تا سرویس فعال شود:
1 2 3 4 | sudo systemctl daemon-reload sudo systemctl enable prometheus sudo systemctl start prometheus |
برای اطمینان از وضعیت سرویس:
1 2 | sudo systemctl status prometheus |
اگر همه چیز درست باشد، باید وضعیت active (running) را مشاهده کنید.
گام چهارم تست دسترسی به رابط وب Prometheus
مرورگر خود را باز کنید و به آدرس زیر بروید (در صورت نیاز آدرس را با IP سرور جایگزین کنید):
1 2 | http://<SERVER_IP>:9090 |
در این صفحه، رابط وب Prometheus را مشاهده میکنید که امکان جستجوی متریکها، اجرای کوئری PromQL و مشاهده وضعیت Targetها را فراهم میکند.
آموزش نصب Node Exporter برای مانیتورینگ سرور
Prometheus برای جمعآوری متریکها به Exporterها متکی است. برای مانیتورینگ سیستمعامل و منابع سرور (CPU، RAM، Disk، Network) از Node Exporter استفاده میشود. نصب Node Exporter روی همان سروری که Prometheus روی آن قرار دارد یا روی سایر سرورها، یک الگوی مرسوم در زیرساختهای ابری و محیطهای DevOps است.
دانلود و نصب Node Exporter
مثل Prometheus، Node Exporter هم به صورت باینری لینوکسی ارائه میشود. روی سروری که میخواهید مانیتور کنید، مراحل زیر را انجام دهید:
1 2 3 4 5 | wget https://github.com/prometheus/node_exporter/releases/download/<version>/node_exporter-<version>.linux-amd64.tar.gz tar xvfz node_exporter-*.linux-amd64.tar.gz cd node_exporter-*.linux-amd64 |
یک کاربر اختصاصی برای Node Exporter بسازید:
1 2 | sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter |
باینری را به مسیر استاندارد منتقل کنید:
1 2 3 | sudo cp node_exporter /usr/local/bin/ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter |
ساخت سرویس systemd برای Node Exporter
فایل /etc/systemd/system/node_exporter.service را ایجاد کنید و محتوای زیر را در آن قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target |
سپس:
1 2 3 4 | sudo systemctl daemon-reload sudo systemctl enable node_exporter sudo systemctl start node_exporter |
به صورت پیشفرض، Node Exporter روی پورت 9100 گوش میدهد. میتوانید با مرورگر یا curl آن را تست کنید:
1 2 | curl http://localhost:9100/metrics |
افزودن Node Exporter به تنظیمات Prometheus
برای اینکه Prometheus متریکهای Node Exporter را جمعآوری کند، باید فایل /etc/prometheus/prometheus.yml را ویرایش کنید و یک job جدید به قسمت scrape_configs اضافه کنید. مثال ساده:
1 2 3 4 5 6 7 8 9 | scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['localhost:9100'] |
اگر Node Exporter روی سرور دیگری اجرا میشود، آدرس IP آن سرور را به جای localhost قرار دهید. پس از ویرایش فایل، سرویس Prometheus را ریستارت کنید:
1 2 | sudo systemctl restart 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 بسازید. نمونه ساده:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | version: '3.8' services: prometheus: image: prom/prometheus:latest container_name: prometheus restart: unless-stopped ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus node_exporter: image: prom/node-exporter:latest container_name: node_exporter restart: unless-stopped network_mode: host volumes: prometheus_data: |
در این مثال:
- Prometheus روی پورت 9090 سیستم میزبان در دسترس است
- فایل پیکربندی prometheus.yml از دایرکتوری جاری mount شده است
- دادهها در volume به نام prometheus_data ذخیره میشوند
- Node Exporter با network_mode برابر host اجرا میشود تا مستقیما متریکهای سیستم میزبان را ارائه دهد
ساخت فایل پیکربندی prometheus.yml در محیط Docker
در همان دایرکتوری docker-compose.yml یک فایل prometheus.yml ایجاد کنید. مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 | global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['prometheus:9090'] - job_name: 'node' static_configs: - targets: ['host.docker.internal:9100'] |
در سرورهای لینوکسی، بسته به تنظیمات Docker، ممکن است لازم باشد آدرس Node Exporter را IP میزبان تنظیم کنید. اگر Node Exporter هم در Docker و با network_mode برابر host اجرا شده باشد، Prometheus میتواند از طریق IP سرور و پورت 9100 به آن متصل شود.
راهاندازی سرویسها با Docker Compose
در دایرکتوری پروژه، دستور زیر را اجرا کنید:
1 2 | docker-compose up -d |
سپس با دستور زیر وضعیت کانتینرها را بررسی کنید:
1 2 | docker ps |
اگر کانتینرها در حال اجرا باشند، رابط وب 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 ثبت کنید. با کمک ما، مانیتورینگ سرورهای شما از یک کار دستی و زمانبر، به یک فرایند خودکار، هوشمند و قابل اعتماد تبدیل خواهد شد.


