رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
مانیتورینگ سرور لینوکس با Prometheus و Node Exporter

مانیتورینگ سرور لینوکس با Prometheus و Node Exporter

آموزش نصب Node Exporter و اتصال آن به Prometheus برای جمع‌آوری متریک‌های CPU، RAM، دیسک و شبکه، به همراه ساخت داشبورد آماده در Grafana و تنظیم هشدار.

مانیتورینگ سرور لینوکس با Prometheus و Node Exporter

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

Node Exporter در برابر مانیتورینگ اپلیکیشن‌محور

در مقالهٔ آموزش مانیتورینگ MongoDB با Grafana و Prometheus با نحوهٔ مانیتور کردن یک سرویس خاص (دیتابیس) آشنا شدید. اما پیش از مانیتورینگ سرویس‌ها، معمولاً باید سلامت خودِ سرور را هم زیر نظر داشته باشید: مصرف CPU، حافظه، فضای دیسک، ترافیک شبکه و لود سیستم. این دقیقاً همان کاری است که Node Exporter انجام می‌دهد.

معماری مانیتورینگ با Prometheus

مدل کاری Prometheus بر پایهٔ Pull است، نه Push: خودِ Prometheus به‌صورت دوره‌ای به Exporterهای مختلف (مثل Node Exporter) وصل می‌شود و متریک‌ها را جمع‌آوری می‌کند.

جزءوظیفه
Node Exporterجمع‌آوری متریک‌های سطح سیستم‌عامل (CPU، RAM، دیسک، شبکه) و انتشار آن‌ها روی پورت ۹۱۰۰
Prometheus Serverجمع‌آوری دوره‌ای متریک‌ها از Exporterها و ذخیرهٔ آن‌ها به‌صورت سری‌های زمانی (Time Series)
Grafanaبصری‌سازی داده‌های Prometheus در قالب داشبورد و تنظیم هشدار (Alert)

نصب Node Exporter

7 خط
useradd --no-create-home --shell /bin/false node_exporter

cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz
tar -xvf node_exporter-1.8.0.linux-amd64.tar.gz
cp node_exporter-1.8.0.linux-amd64/node_exporter /usr/local/bin/
chown node_exporter:node_exporter /usr/local/bin/node_exporter
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساخت سرویس systemd برای اجرای دائمی:

12 خط
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
5 خط
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

curl http://localhost:9100/metrics | head -20
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

معرفی Node Exporter به Prometheus

در فایل prometheus.yml سرور Prometheus (که مراحل نصب آن مشابه همان چیزی است که در مقالهٔ مانیتورینگ MongoDB دیدید)، یک Job جدید اضافه کنید:

4 خط
scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
systemctl restart prometheus
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای اطمینان از اتصال درست، در رابط وب Prometheus (پورت ۹۰۹۰) مسیر Status > Targets را بررسی کنید؛ وضعیت Job جدید باید UP باشد.

ساخت داشبورد در Grafana

به‌جای طراحی داشبورد از صفر، می‌توانید از داشبورد آمادهٔ رسمی Node Exporter در Grafana استفاده کنید:

  1. در Grafana وارد بخش Dashboards > New > Import شوید
  2. شناسهٔ داشبورد رسمی 1860 (Node Exporter Full) را وارد کنید
  3. منبع دادهٔ Prometheus خود را انتخاب و Import کنید

این داشبورد بلافاصله نمودارهای کاملی از CPU، حافظه، دیسک I/O، فضای باقی‌مانده و ترافیک شبکه نشان می‌دهد.

تنظیم هشدار (Alert) ساده

برای مثال، هشداری برای زمانی که مصرف دیسک از ۸۵ درصد بیشتر شود:

10 خط
groups:
  - name: node_alerts
    rules:
      - alert: HighDiskUsage
        expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 15
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "فضای دیسک کمتر از ۱۵٪ باقی مانده است"
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اگر سرور شما Nginx هم اجرا می‌کند، حتماً مقالهٔ بهینه‌سازی کارایی Nginx را هم ببینید تا هم عملکرد و هم متریک‌های آن را کامل تحت نظر داشته باشید.

جمع‌بندی

مانیتورینگ سطح سیستم‌عامل با Node Exporter و Prometheus پایه‌ای‌ترین و در عین حال مهم‌ترین لایهٔ مانیتورینگ هر سرور تولید است. ترکیب آن با مانیتورینگ اختصاصی سرویس‌هایی مثل MongoDB (که در مقالهٔ مرتبط توضیح داده شد)، دید کاملی از سلامت زیرساخت به شما می‌دهد و امکان واکنش پیش از وقوع قطعی را فراهم می‌کند.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS