DevOps و امنیت پیشرفته · مانیتورینگ

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

با خدمات مانیتورینگ زیرساخت کانفیگ سرور، پیش از آنکه کاربران خبر بدهند می‌بینید دیسک کدام سرور در حال پر شدن است، کدام سرویس خطا می‌دهد و کندی از کجا شروع شده است. متریک‌ها، لاگ‌ها و هشدارهای سرورها، تجهیزات شبکه و کانتینرها با Prometheus، Grafana، Zabbix، ELK و Loki یک‌جا جمع می‌شوند.

Prometheus · Alertmanager Grafana Zabbix · SNMP ELK · Loki
چه زمانی به این خدمت نیاز دارید؟

نشانه‌هایی که زیرساخت شما دید کافی ندارد

از قطعی سرویس، از زبان کاربران یا مشتریان باخبر می‌شویم

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

آن‌قدر هشدار می‌آید که دیگر کسی آن‌ها را نمی‌خواند

آستانه‌های پیش‌فرض و هشدار برای هر نوسان کوچک، تیم را به نادیده گرفتن هشدارها عادت می‌دهد. هشدار باید برای وضعیتی ارسال شود که کسی باید برایش کاری انجام دهد.

هنگام مشکل باید به تک‌تک سرورها وصل شویم و لاگ بخوانیم

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

خدمات Observability

در خدمات مانیتورینگ و Observability چه انجام می‌دهیم؟

مانیتورینگ می‌گوید چه چیزی خراب است و Observability کمک می‌کند بفهمید چرا. اگر با مفاهیم پایه آشنا نیستید، راهنمای مانیتورینگ سرور را ببینید؛ در این خدمت همان مفاهیم روی زیرساخت شما اجرا و نگهداری می‌شوند.

متریک‌ها با Prometheus و Grafana

دید عددی و لحظه‌ای از منابع و سرویس‌ها.

  • جمع‌آوری CPU، حافظه، دیسک و شبکه سرورها با exporterها
  • متریک وب‌سرور، دیتابیس و کانتینرهای Docker
  • داشبوردهای Grafana برای تیم فنی و نمای خلاصه برای مدیران

خدمات مانیتورینگ شبکه و سرور با Zabbix

برای تجهیزات شبکه و محیط‌های ترکیبی ویندوز و لینوکس.

  • پایش سوییچ، روتر و فایروال از طریق SNMP
  • مانیتورینگ سرورهای ویندوز و لینوکس با Zabbix agent
  • قالب‌ها و آستانه‌هایی که برای هر دستگاه تنظیم شده‌اند

لاگ متمرکز با ELK یا Loki

همه لاگ‌ها در یک جا و قابل جست‌وجو.

  • جمع‌آوری لاگ سیستم، وب‌سرور و اپلیکیشن از سرورها و کانتینرها
  • ELK (Elasticsearch، Logstash، Kibana) برای جست‌وجوی متنی پیشرفته
  • Loki برای ذخیره کم‌هزینه‌تر و نمایش لاگ کنار متریک‌ها در Grafana

هشداردهی قابل اقدام

هشدار فقط برای نشانه‌های واقعی مشکل و برای فرد مسئول.

  • قواعد هشدار در Alertmanager یا Zabbix بر اساس نشانه‌های واقعی مشکل
  • ارسال هشدار به تلگرام، ایمیل یا کانال تیم
  • گروه‌بندی هشدارهای مرتبط
  • سکوت هشدارها هنگام نگهداری برنامه‌ریزی‌شده

Observability اپلیکیشن و سرویس‌ها

رفتار سرویس از دید کاربر، علاوه بر سلامت سرور.

  • متریک نرخ درخواست، خطا و زمان پاسخ برای هر سرویس
  • همبستگی متریک و لاگ برای رسیدن سریع‌تر به ریشه مشکل
  • بررسی دسترس‌پذیری وب‌سایت و API از بیرون با blackbox exporter

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

سیستم مانیتورینگ هم مثل هر سیستم دیگری نگهداری می‌خواهد.

  • افزودن سرورها و سرویس‌های جدید به پایش و بازبینی دوره‌ای هشدارهای پرتکرار و بی‌فایده
  • پایش سلامت خود سیستم مانیتورینگ و فضای ذخیره‌سازی آن
راهنمای کامل

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

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

متریک، لاگ و trace به چه پرسشی جواب می‌دهند؟

متریک عددی است که در فاصله‌های منظم ثبت می‌شود، مثل مصرف CPU، تعداد درخواست در ثانیه یا زمان پاسخ. متریک‌ها فضای کمی می‌گیرند و برای رسم روند و هشدار مناسب‌اند، ولی نمی‌گویند یک درخواست مشخص چرا خطا داده است. لاگ همین جزئیات را ثبت می‌کند: پیام خطا، آدرس درخواست و زمان دقیق. trace مسیر یک درخواست را بین چند سرویس دنبال می‌کند و نشان می‌دهد تأخیر در کدام مرحله بوده است.

برای بیشتر سازمان‌ها شروع با متریک و لاگ متمرکز کافی است. برای هر سرویس نرخ درخواست، نرخ خطا و زمان پاسخ ثبت می‌شود و blackbox exporter در دسترس بودن وب‌سایت و API را از بیرون می‌سنجد. وقتی متریک و لاگ با برچسب‌های یکسان، مثل نام سرویس و سرور، ذخیره شوند، از نمودار افزایش خطا در Grafana می‌توان مستقیم به لاگ‌های همان بازه رسید. راه‌اندازی این دو ابزار را در نصب و کانفیگ Prometheus و Grafana نوشته‌ایم.

Zabbix، Prometheus یا هر دو؟

Zabbix برای تجهیزات شبکه، سرورهای ویندوز و محیط‌هایی که ماشین‌هایش ثابت و طولانی‌مدت‌اند انتخاب راحت‌تری است. SNMP سوییچ‌ها و فایروال‌ها را پوشش می‌دهد، agent روی ویندوز و لینوکس نصب می‌شود و قالب‌ها و رابط مدیریتی آماده دارد. Prometheus داده را از exporterها می‌کشد و با برچسب کار می‌کند، به همین دلیل با کانتینرها و سرویس‌هایی که زیاد عوض می‌شوند بهتر کنار می‌آید. در بسیاری از زیرساخت‌ها هر دو کنار هم کار می‌کنند و Grafana داده هر دو را در یک داشبورد نشان می‌دهد.

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

هشدارهایی که تیم نادیده نمی‌گیرد

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

چند هفته بعد از راه‌اندازی، هشدارهای پرتکرار بازبینی می‌شوند. هشداری که هر روز می‌آید و کسی برایش کاری نمی‌کند، یا آستانه اشتباهی دارد یا اصلاً نباید هشدار باشد. اگر هشدارها مشکل مشخصی مثل کندی دیتابیس یا کمبود منابع را نشان دهند، رفع آن در خدمات بهینه‌سازی سرور و دیتابیس انجام می‌شود.

سیستم مانیتورینگ را کجا نصب و چطور نگهداری کنیم؟

سرور مانیتورینگ باید جدا از سرورهایی باشد که پایش می‌کند، وگرنه با از کار افتادن همان سرور هشدار قطعی هم ارسال نمی‌شود. خود سیستم مانیتورینگ هم پایش می‌خواهد، چون اگر Prometheus از کار بیفتد یا دیسک Elasticsearch پر شود، نبودن هشدار ممکن است سالم بودن همه‌چیز به نظر برسد. داشبوردهای Grafana و Kibana را پشت رمز و VPN نگه دارید، چون نام سرورها، آدرس‌ها و گاهی داده حساس در لاگ‌ها دیده می‌شود. در سرورهای داخل ایران، دریافت ایمیج و بسته از بعضی مخزن‌های خارجی ممکن است محدود باشد، پس منبع نصب exporterها و ایمیج‌ها پیش از شروع مشخص می‌شود.

کانتینرها عمر کوتاهی دارند و با هر استقرار جدید نام و آدرسشان عوض می‌شود. متریک و لاگ آن‌ها با برچسب نام سرویس ذخیره می‌شود تا داده نسخه قبلی و جدید یک سرویس کنار هم دیده شود. راه‌اندازی خود کانتینرها در خدمات Docker انجام می‌شود.

زمان و هزینه راه‌اندازی مانیتورینگ به چه بستگی دارد؟

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

فرآیند اجرای کار

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

شناخت زیرساخت و سرویس‌های اصلی

فهرست سرورها، تجهیزات شبکه، کانتینرها و سرویس‌ها تهیه و مشخص می‌شود قطعی یا کندی کدام‌یک بیشترین اثر را روی کسب‌وکار شما دارد.

انتخاب ابزار و طراحی

ترکیب ابزار انتخاب می‌شود: Zabbix برای شبکه و سرورهای متنوع، Prometheus و Grafana برای سرویس‌ها و کانتینرها، ELK یا Loki برای لاگ. محل نصب، حجم ذخیره‌سازی و مدت نگهداری داده هم در همین مرحله تعیین می‌شود.

استقرار و تنظیم هشدارها

سرور مانیتورینگ و agentها یا exporterها نصب می‌شوند، داشبوردها ساخته می‌شوند و قواعد هشدار با آستانه‌های واقعی محیط شما تنظیم و تست می‌شوند.

تحویل، مستندسازی و بهبود

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

محدوده خدمات مانیتورینگ و Observability

شامل این خدمت

  • طراحی و راه‌اندازی Prometheus، Grafana و Alertmanager
  • راه‌اندازی سرور Zabbix و مانیتورینگ شبکه با SNMP
  • لاگ متمرکز با ELK Stack یا Loki
  • داشبوردها، قواعد هشدار و مسیر ارسال هشدار
  • مستندسازی و بازبینی دوره‌ای هشدارها

خارج از این خدمت

چرا کانفیگ سرور؟

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

این خدمت بخشی از خدمات DevOps و امنیت کانفیگ سرور است. نصب ابزار بخش ساده کار است و بیشتر زمان صرف انتخاب متریک‌ها، کم کردن هشدارهای کاذب و ساختن داشبوردهایی می‌شود که هنگام مشکل به کار بیایند.

01

انتخاب ابزار بر اساس نوع زیرساخت

Prometheus، Grafana، Zabbix، ELK و Loki را بر اساس نوع زیرساخت شما انتخاب و ترکیب می‌کنیم.

02

سرور، شبکه و کانتینر در یک دید

همان تیمی که شبکه، Docker و CI/CD را اجرا می‌کند، مانیتورینگ را طراحی می‌کند؛ پس متریک‌های مهم هر لایه از قلم نمی‌افتند.

03

راهنماهای فنی منتشرشده

آموزش‌های نصب Prometheus و راه‌اندازی Elastic Stack تیم کانفیگ سرور روی همین سایت در دسترس است.

04

مشاوره اولیه رایگان

تعداد سرورها و ابزار فعلی را در تلگرام بنویسید تا اولویت‌های پایش را پیش از هر تعهدی با شما مرور کنیم.

سوالات متداول

پرسش‌های رایج درباره مانیتورینگ و Observability

Observability چیست و چه تفاوتی با مانیتورینگ دارد؟

مانیتورینگ وضعیت‌های ازپیش‌تعریف‌شده را می‌سنجد و می‌گوید چه چیزی خراب است. Observability یا مشاهده‌پذیری یعنی سیستم آن‌قدر داده، شامل متریک، لاگ و trace، تولید کند که بتوانید علت مشکلات پیش‌بینی‌نشده را هم پیدا کنید. در عمل مانیتورینگ بخشی از Observability است.

برای مانیتورینگ شبکه و سرور، Zabbix بهتر است یا Prometheus؟

برای تجهیزات شبکه، سرورهای ویندوز و محیط‌های سنتی، Zabbix با SNMP، agent و رابط مدیریتی کامل انتخاب راحت‌تری است. برای سرویس‌ها، کانتینرها و اپلیکیشن‌های مدرن، Prometheus و Grafana انعطاف بیشتری دارند. در بسیاری از زیرساخت‌ها هر دو کنار هم استفاده می‌شوند و Grafana داده هر دو را نمایش می‌دهد.

ELK Stack چیست و Loki چه تفاوتی با آن دارد؟

ELK مجموعه Elasticsearch، Logstash و Kibana برای جمع‌آوری، ایندکس و جست‌وجوی لاگ است. Loki به‌جای کل متن، فقط برچسب‌های لاگ را ایندکس می‌کند؛ به همین دلیل منابع و فضای کمتری می‌خواهد، اما جست‌وجوی متنی آن محدودتر است. انتخاب به حجم لاگ و نوع جست‌وجوی مورد نیاز شما بستگی دارد.

سیستم مانیتورینگ را کجا نصب کنیم؟

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

کانتینرهای Docker چگونه مانیتور می‌شوند؟

متریک مصرف منابع هر کانتینر با exporter مناسب به Prometheus و لاگ کانتینرها به Loki یا ELK فرستاده می‌شود. چون کانتینرها عمر کوتاهی دارند، داده آن‌ها با برچسب نام سرویس ذخیره می‌شود تا نسخه‌های قبلی و جدید یک سرویس کنار هم دیده شوند. راه‌اندازی خود کانتینرها در خدمات Docker انجام می‌شود.

آیا مانیتورینگ روی کارایی سرورها اثر منفی دارد؟

اثر agentها و exporterها معمولاً ناچیز است. آنچه باید کنترل شود، حجم لاگ ارسالی و فاصله جمع‌آوری متریک‌هاست که در مرحله طراحی متناسب با منابع سرورها تنظیم می‌شود.

هزینه خدمات مانیتورینگ زیرساخت چقدر است؟

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

مانیتورینگ زیرساخت خود را با ما طراحی کنید

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