از قطعی سرویس، از زبان کاربران یا مشتریان باخبر میشویم
در این حالت یا هشداری تعریف نشده یا هشدارها به دست کسی نمیرسند. هشدار باید پیش از قطعی و روی نشانههایی مثل پر شدن دیسک، افزایش خطا یا کند شدن پاسخ فعال شود.
با خدمات مانیتورینگ زیرساخت کانفیگ سرور، پیش از آنکه کاربران خبر بدهند میبینید دیسک کدام سرور در حال پر شدن است، کدام سرویس خطا میدهد و کندی از کجا شروع شده است. متریکها، لاگها و هشدارهای سرورها، تجهیزات شبکه و کانتینرها با Prometheus، Grafana، Zabbix، ELK و Loki یکجا جمع میشوند.
در این حالت یا هشداری تعریف نشده یا هشدارها به دست کسی نمیرسند. هشدار باید پیش از قطعی و روی نشانههایی مثل پر شدن دیسک، افزایش خطا یا کند شدن پاسخ فعال شود.
آستانههای پیشفرض و هشدار برای هر نوسان کوچک، تیم را به نادیده گرفتن هشدارها عادت میدهد. هشدار باید برای وضعیتی ارسال شود که کسی باید برایش کاری انجام دهد.
بدون لاگ متمرکز و داشبورد، یافتن ریشه مشکل ساعتها طول میکشد و با ریستارت سرویس، شواهد مشکل هم از بین میرود.
مانیتورینگ میگوید چه چیزی خراب است و Observability کمک میکند بفهمید چرا. اگر با مفاهیم پایه آشنا نیستید، راهنمای مانیتورینگ سرور را ببینید؛ در این خدمت همان مفاهیم روی زیرساخت شما اجرا و نگهداری میشوند.
دید عددی و لحظهای از منابع و سرویسها.
برای تجهیزات شبکه و محیطهای ترکیبی ویندوز و لینوکس.
همه لاگها در یک جا و قابل جستوجو.
هشدار فقط برای نشانههای واقعی مشکل و برای فرد مسئول.
رفتار سرویس از دید کاربر، علاوه بر سلامت سرور.
سیستم مانیتورینگ هم مثل هر سیستم دیگری نگهداری میخواهد.
خدمات مانیتورینگ زیرساخت برای تیمی است که چند سرور، تجهیزات شبکه و سرویسهای کانتینری دارد و هنگام مشکل مجبور است به تکتک سرورها وصل شود و لاگ بخواند. مانیتورینگ وضعیتهایی را که از قبل تعریف شدهاند میسنجد، مثل پر شدن دیسک یا توقف یک سرویس. Observability داده کافی جمع میکند تا علت مشکلی را هم پیدا کنید که کسی از قبل برایش هشدار نگذاشته است. بخشهای زیر نشان میدهند هر نوع داده به چه کاری میآید، ابزار را چطور انتخاب کنید و چه چیزی زمان و هزینه راهاندازی را تعیین میکند.
متریک عددی است که در فاصلههای منظم ثبت میشود، مثل مصرف CPU، تعداد درخواست در ثانیه یا زمان پاسخ. متریکها فضای کمی میگیرند و برای رسم روند و هشدار مناسباند، ولی نمیگویند یک درخواست مشخص چرا خطا داده است. لاگ همین جزئیات را ثبت میکند: پیام خطا، آدرس درخواست و زمان دقیق. trace مسیر یک درخواست را بین چند سرویس دنبال میکند و نشان میدهد تأخیر در کدام مرحله بوده است.
برای بیشتر سازمانها شروع با متریک و لاگ متمرکز کافی است. برای هر سرویس نرخ درخواست، نرخ خطا و زمان پاسخ ثبت میشود و blackbox exporter در دسترس بودن وبسایت و API را از بیرون میسنجد. وقتی متریک و لاگ با برچسبهای یکسان، مثل نام سرویس و سرور، ذخیره شوند، از نمودار افزایش خطا در Grafana میتوان مستقیم به لاگهای همان بازه رسید. راهاندازی این دو ابزار را در نصب و کانفیگ Prometheus و Grafana نوشتهایم.
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ها نصب میشوند، داشبوردها ساخته میشوند و قواعد هشدار با آستانههای واقعی محیط شما تنظیم و تست میشوند.
راهنمای داشبوردها و معنای هر هشدار تحویل داده میشود و پس از چند هفته، هشدارهای پرتکرار بازبینی و آستانهها اصلاح میشوند.
این خدمت بخشی از خدمات DevOps و امنیت کانفیگ سرور است. نصب ابزار بخش ساده کار است و بیشتر زمان صرف انتخاب متریکها، کم کردن هشدارهای کاذب و ساختن داشبوردهایی میشود که هنگام مشکل به کار بیایند.
Prometheus، Grafana، Zabbix، ELK و Loki را بر اساس نوع زیرساخت شما انتخاب و ترکیب میکنیم.
همان تیمی که شبکه، Docker و CI/CD را اجرا میکند، مانیتورینگ را طراحی میکند؛ پس متریکهای مهم هر لایه از قلم نمیافتند.
آموزشهای نصب Prometheus و راهاندازی Elastic Stack تیم کانفیگ سرور روی همین سایت در دسترس است.
تعداد سرورها و ابزار فعلی را در تلگرام بنویسید تا اولویتهای پایش را پیش از هر تعهدی با شما مرور کنیم.
مانیتورینگ وضعیتهای ازپیشتعریفشده را میسنجد و میگوید چه چیزی خراب است. Observability یا مشاهدهپذیری یعنی سیستم آنقدر داده، شامل متریک، لاگ و trace، تولید کند که بتوانید علت مشکلات پیشبینینشده را هم پیدا کنید. در عمل مانیتورینگ بخشی از Observability است.
برای تجهیزات شبکه، سرورهای ویندوز و محیطهای سنتی، Zabbix با SNMP، agent و رابط مدیریتی کامل انتخاب راحتتری است. برای سرویسها، کانتینرها و اپلیکیشنهای مدرن، Prometheus و Grafana انعطاف بیشتری دارند. در بسیاری از زیرساختها هر دو کنار هم استفاده میشوند و Grafana داده هر دو را نمایش میدهد.
ELK مجموعه Elasticsearch، Logstash و Kibana برای جمعآوری، ایندکس و جستوجوی لاگ است. Loki بهجای کل متن، فقط برچسبهای لاگ را ایندکس میکند؛ به همین دلیل منابع و فضای کمتری میخواهد، اما جستوجوی متنی آن محدودتر است. انتخاب به حجم لاگ و نوع جستوجوی مورد نیاز شما بستگی دارد.
سرور مانیتورینگ بهتر است جدا از سرورهایی باشد که پایش میکند؛ وگرنه با از کار افتادن همان سرور، هشدار قطعی هم ارسال نمیشود. بسته به نیاز، روی یک سرور مجازی مستقل یا در زیرساخت خودتان راهاندازی میشود.
متریک مصرف منابع هر کانتینر با exporter مناسب به Prometheus و لاگ کانتینرها به Loki یا ELK فرستاده میشود. چون کانتینرها عمر کوتاهی دارند، داده آنها با برچسب نام سرویس ذخیره میشود تا نسخههای قبلی و جدید یک سرویس کنار هم دیده شوند. راهاندازی خود کانتینرها در خدمات Docker انجام میشود.
اثر agentها و exporterها معمولاً ناچیز است. آنچه باید کنترل شود، حجم لاگ ارسالی و فاصله جمعآوری متریکهاست که در مرحله طراحی متناسب با منابع سرورها تنظیم میشود.
هزینه به تعداد سرورها و تجهیزات، حجم لاگ و نیاز به نگهداری مستمر بستگی دارد و قیمت ثابت منتشرشدهای ندارد. پس از مشاوره اولیه رایگان و روشن شدن محدوده، برآورد هزینه ارائه میشود.
تعداد سرورها، تجهیزات شبکه و ابزار مانیتورینگ فعلی را، اگر دارید، در تلگرام بنویسید. در مشاوره اولیه رایگان، ترکیب ابزار و اولویتهای پایش را با شما مرور میکنیم.