پیکوسیستم خدمات فنی IT

مانیتورینگ سرور چیست؟ چه چیزی را پایش کنیم و با چه ابزاری

مانیتورینگ سرور یعنی قبل از اینکه کاربران خبر بدهند، خودتان از مشکل باخبر شوید. در این راهنما می بینید چه چیزی را پایش کنید، کدام ابزار مناسب شماست و هشدارها را چطور تنظیم کنید.

مانیتورینگ سرور چیست؟ چه چیزی را پایش کنیم و با چه ابزاری

در بیشتر شرکت ها اولین خبر از مشکل سرور، تلفن یک کاربر است: «سیستم باز نمی شود». تا آن لحظه دیسک پر شده، دیتابیس متوقف شده یا گواهی SSL منقضی شده و هیچ کس متوجه نبوده است. مانیتورینگ سرور برای این است که این ترتیب را برعکس کند. در این مطلب توضیح می دهیم مانیتورینگ سرور چیست، چه چیزهایی را باید زیر نظر گرفت، ابزارهای رایج مثل Zabbix و Prometheus چه فرقی دارند و هشدارها را چطور تنظیم کنید که نادیده گرفته نشوند.

مانیتورینگ سرور چیست؟

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

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

تفاوت مانیتورینگ آپتایم با مانیتورینگ کامل سرور

بررسی آپتایم فقط می گوید سایت یا پورت در دسترس هست یا نه. این بررسی لازم است، ولی معمولا خبر را وقتی می دهد که قطعی اتفاق افتاده است. مانیتورینگ کامل سرور علامت های قبل از قطعی را هم می بیند: دیسکی که هر روز یک درصد پرتر می شود، حافظه ای که آرام آرام به swap می رود یا صف ایمیلی که بزرگ می شود.

چه چیزی را مانیتور کنیم؟

جدول زیر یک نقطه شروع است. آستانه ها پیشنهادی اند و باید بعد از چند هفته دیدن رفتار واقعی سرور خودتان تنظیم شوند.

لایه شاخص چرا مهم است آستانه اولیه پیشنهادی
پردازنده درصد مصرف، load average، iowait iowait بالا معمولا نشانه گلوگاه دیسک است مصرف بالای 90 درصد به مدت چند دقیقه
حافظه حافظه در دسترس، مصرف swap شروع swap یعنی کندی محسوس سرویس ها حافظه در دسترس کمتر از 10 درصد
دیسک فضای آزاد، inode، latency دیسک پر دیتابیس و لاگ را متوقف می کند فضای آزاد کمتر از 15 درصد
سلامت سخت افزار SMART، وضعیت RAID، دما، منبع تغذیه خرابی دیسک در RAID تا دیسک دوم دیده نمی شود هر تغییر وضعیت از OK
شبکه ترافیک، خطای اینترفیس، packet loss مشکل کابل یا سوئیچ اول به شکل خطا دیده می شود افزایش خطا یا loss پایدار
سرویس ها وضعیت Nginx، MySQL، سرویس ایمیل، AD سرور روشن است ولی سرویس از کار افتاده توقف سرویس
اپلیکیشن زمان پاسخ، کد خطای HTTP، کوئری های کند تجربه کاربر را مستقیم نشان می دهد افزایش خطای 5xx
امنیت و انقضا تاریخ انقضای SSL و دامنه، تلاش ورود ناموفق انقضای گواهی قطعی کامل ایجاد می کند کمتر از 14 روز به انقضا
بکاپ موفقیت آخرین بکاپ و زمان آن بکاپ متوقف شده تا روز حادثه دیده نمی شود عدم موفقیت یا گذشتن بیش از یک دوره

مانیتورینگ سرور لینوکس با دستورهای پایه

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

uptime                      # load average یک، پنج و پانزده دقیقه
vmstat 1 5                  # CPU، swap و iowait در پنج ثانیه
iostat -x 1 3               # latency و درصد مشغولی دیسک ها (بسته sysstat)
free -m                     # حافظه در دسترس
df -h && df -i              # فضای دیسک و inode
systemctl --failed          # سرویس های متوقف شده
journalctl -p err -b        # خطاهای ثبت شده از آخرین بوت

مانیتورینگ ویندوز سرور

در ویندوز همین داده ها از Performance Counter ها خوانده می شوند. برای یک بررسی سریع در PowerShell:

Get-Counter '\Processor(_Total)\% Processor Time','\Memory\Available MBytes','\LogicalDisk(*)\% Free Space' -SampleInterval 5 -MaxSamples 3

روی ویندوز سرور معمولا Event Log هم بخش مهمی از مانیتورینگ است، مثلا خطاهای سرویس Active Directory، هشدارهای دیسک و شکست Windows Backup.

مانیتورینگ اتاق سرور و دمای آن

مانیتورینگ اتاق سرور معمولا فراموش می شود، در حالی که خرابی کولر یا قطعی برق می تواند همه سرورها را همزمان از کار بیندازد. دمای داخلی سرورها از طریق IPMI یا کارت مدیریت (iDRAC در Dell و iLO در HPE) قابل خواندن است. UPS ها معمولا کارت شبکه با SNMP دارند که وضعیت باتری و قطعی برق را گزارش می کند. برای دما و رطوبت خود اتاق هم سنسورهای شبکه ای با پشتیبانی SNMP در دسترس است.

ابزار مانیتورینگ سرور: کدام را انتخاب کنیم؟

ابزار مناسب برای نکته
Zabbix شبکه و سرورهای متنوع سازمانی، تجهیزات SNMP متن باز، رابط وب کامل، قالب های آماده زیاد
Prometheus و Grafana سرورهای لینوکسی، کانتینر و Kubernetes، متریک های اپلیکیشن پیکربندی با فایل، انعطاف زیاد، نیاز به دانش بیشتر
Uptime Kuma بررسی آپتایم سایت، پورت و گواهی SSL نصب ساده، مناسب کنار یک سیستم کامل تر
PRTG محیط های ویندوزی که ابزار تجاری با راه اندازی سریع می خواهند لایسنس بر اساس تعداد سنسور
LibreNMS مانیتورینگ سوئیچ و روتر با SNMP کشف خودکار تجهیزات شبکه
Netdata دید لحظه ای و دقیق روی یک یا چند سرور نصب سریع، نمودارهای ثانیه ای

zabbix چیست؟

Zabbix یک سیستم مانیتورینگ متن باز است که سرورها، ماشین های مجازی، تجهیزات شبکه، دیتابیس ها و سرویس ها را از یک کنسول وب پایش می کند. اجزای اصلی آن Zabbix Server، یک دیتابیس (MySQL/MariaDB یا PostgreSQL)، رابط وب و در صورت نیاز Zabbix Proxy برای شعبه ها یا شبکه های جدا هستند. داده با agent، SNMP، IPMI، بررسی HTTP و روش های دیگر جمع می شود. منطق هشدار با trigger تعریف می شود؛ مثلا این عبارت وقتی میانگین مصرف CPU در پنج دقیقه از 90 درصد بالاتر برود فعال می شود:

avg(/web-01/system.cpu.util,5m)>90

برای نصب در محیط عملیاتی، نسخه های LTS را انتخاب کنید و پیش از نصب، نسخه LTS فعلی و سازگاری آن با توزیع لینوکس خودتان را در سایت Zabbix بررسی کنید.

zabbix agent چیست؟

Zabbix Agent برنامه کوچکی است که روی سرور مقصد نصب می شود و داده های محلی مثل CPU، حافظه، دیسک، سرویس ها و لاگ ها را جمع می کند. نسخه جدیدتر آن Zabbix Agent 2 است که با Go نوشته شده و پلاگین هایی برای سرویس هایی مثل MySQL، PostgreSQL و Docker دارد. agent در دو حالت کار می کند: در حالت passive سرور روی پورت 10050 از agent داده می خواهد و در حالت active خود agent داده را به پورت 10051 سرور می فرستد. حالت active برای سرورهای پشت NAT مناسب تر است. تنظیمات اصلی در فایل agent این سه خط است:

# /etc/zabbix/zabbix_agent2.conf
# سروری که اجازه درخواست passive دارد
Server=10.0.0.5
# سرور یا پراکسی برای ارسال active
ServerActive=10.0.0.5
# باید دقیقا با نام میزبان در رابط وب یکی باشد
Hostname=web-01

در فایل های تنظیم Zabbix توضیح باید در خط جدا نوشته شود و بعد از مقدار قابل استفاده نیست.

روی فایروال سرور مقصد، پورت 10050 را فقط برای آدرس Zabbix Server یا Proxy باز کنید.

Prometheus و Grafana

Prometheus در بازه های مشخص از endpoint های HTTP متریک می خواند (مدل pull) و آن ها را در دیتابیس سری زمانی خودش نگه می دارد. روی سرورهای لینوکس، node_exporter متریک های سیستم عامل را روی پورت 9100 منتشر می کند. Grafana برای داشبورد استفاده می شود و Alertmanager مسئول گروه بندی و ارسال هشدارهاست. یک نمونه ساده از تنظیم scrape و یک قانون هشدار برای پر شدن دیسک:

# prometheus.yml
scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['10.0.0.11:9100', '10.0.0.12:9100']

# rules/node.yml
groups:
  - name: node
    rules:
      - alert: DiskAlmostFull
        expr: node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"} < 0.15
        for: 15m
        labels:
          severity: warning
        annotations:
          summary: "فضای دیسک {{ $labels.instance }} کمتر از 15 درصد است"

اگر بیشتر به داشبورد، لاگ مرکزی و متریک های اپلیکیشن نیاز دارید، این مسیر به حوزه Observability با Grafana، Prometheus و لاگ مرکزی نزدیک می شود.

مانیتورینگ از بیرون شبکه

سیستم مانیتورینگی که داخل همان دیتاسنتر است، قطعی کل دیتاسنتر یا اینترنت آن را نمی بیند. یک بررسی ساده آپتایم از بیرون، مثلا Uptime Kuma روی یک سرور در دیتاسنتر دیگر، این نقطه کور را می پوشاند. با توجه به اختلال های گاه و بی گاه ارتباط بین الملل، اگر کاربران شما داخل ایران هستند، دست کم یکی از نقاط بررسی هم داخل کشور باشد.

هشداردهی: هشداری بسازید که دیده شود

بزرگ ترین مشکل مانیتورینگ در عمل، هشدارهای زیادی است که کسی به آن ها نگاه نمی کند. وقتی روزی ده ها پیام بی اهمیت می رسد، پیام مهم هم بین آن ها گم می شود. این قواعد کمک می کند:

  • سطح بندی: دست کم دو سطح داشته باشید. هشدار «بحرانی» یعنی کسی همین حالا باید کاری کند، «هشدار» یعنی در ساعت کاری بررسی شود.
  • مدت زمان: برای هر شرط، مدت پایداری تعیین کنید (مثل for: 15m در Prometheus). یک لحظه مصرف بالای CPU مشکل نیست.
  • گیرنده مشخص: هر هشدار یک صاحب دارد. ارسال همه هشدارها به یک گروه بزرگ یعنی هیچ کس مسئول نیست.
  • کانال مناسب: ایمیل برای هشدارهای عادی، پیامک یا پیام رسان برای بحرانی ها. کانال هایی را انتخاب کنید که در زمان اختلال اینترنت هم کار کنند.
  • زمان نگهداری: هنگام به روزرسانی یا ریبوت برنامه ریزی شده، هشدارها را موقتا ساکت کنید (maintenance در Zabbix یا silence در Alertmanager).
  • مانیتورینگ خود مانیتورینگ: اگر سرور Zabbix یا Prometheus از کار بیفتد، هیچ هشداری نمی رسد. یک بررسی مستقل برای خود سیستم مانیتورینگ تعریف کنید.
  • بازبینی ماهانه: هشدارهایی که همیشه نادیده گرفته می شوند را اصلاح یا حذف کنید.

چک لیست راه اندازی مانیتورینگ سرور

  1. فهرست سرورها، سرویس ها و تجهیزات شبکه را با اولویت هر کدام بنویسید.
  2. ابزار را بر اساس محیط انتخاب کنید: تنوع تجهیزات و SNMP به سمت Zabbix، کانتینر و متریک اپلیکیشن به سمت Prometheus.
  3. سرور مانیتورینگ را جدا از سرورهای اصلی و با بکاپ مخصوص خودش راه اندازی کنید.
  4. agent یا exporter را نصب کنید و پورت آن را در فایروال فقط برای سرور مانیتورینگ باز کنید.
  5. شاخص های پایه جدول بالا را فعال کنید و چند هفته داده جمع کنید.
  6. آستانه ها را بر اساس رفتار واقعی تنظیم و هشدارها را سطح بندی کنید.
  7. یک بررسی آپتایم از بیرون شبکه اضافه کنید.
  8. مسیر هشدار را با یک خطای ساختگی تست کنید، مثلا متوقف کردن یک سرویس آزمایشی.
  9. برای هر هشدار بحرانی، یک راهنمای کوتاه بنویسید: چه چیزی را بررسی کنیم و چه کسی را خبر کنیم.

راه اندازی داخلی یا سپردن مانیتورینگ به تیم بیرونی؟

نصب Zabbix یا Prometheus کار چند ساعته است. بخش زمان بر، تنظیم آستانه ها، نگهداری قالب ها، به روزرسانی خود سیستم مانیتورینگ و مهم تر از همه، پاسخ دادن به هشدار در ساعت غیرکاری است. اگر تیم IT شما یک یا دو نفر است، معمولا همین بخش آخر مشکل ساز می شود. در سرویس مانیتورینگ پیشگیرانه سرور و شبکه، ما مانیتورینگ را روی زیرساخت شما راه اندازی می کنیم، هشدارها را دریافت و بررسی می کنیم و گزارش دوره ای می فرستیم. دامنه کار و زمان پاسخ در قرارداد مشخص می شود.

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

استعلام

کارتان را بگویید، مسیر و هزینه را می گوییم

چند خط درباره وضعیت فعلی و چیزی که می خواهید بنویسید. یک مهندس خودش تماس می گیرد، نه واحد فروش.

  1. 01درخواست را می خوانیم و اگر ابهامی بود تماس می گیریم.
  2. 02در صورت نیاز، بررسی اولیه ریموت یا بازدید انجام می شود.
  3. 03پیشنهاد مکتوب با دامنه کار، زمان بندی و هزینه می فرستیم.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود.