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

راه اندازی ELK و Grafana Loki برای لاگ مرکزی و مانیتورینگ با Prometheus

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

ابزارها و فناوری ها observability
  • Prometheus
  • Grafana
  • Alertmanager
  • Grafana Loki
  • Elasticsearch
  • Kibana
  • Logstash
  • OpenTelemetry
  • node_exporter
5بخش کار
4خروجی
4مرحله

مانیتورینگ و لاگ (ELK و Grafana) چیست؟

راه اندازی ELK یعنی جمع کردن لاگ همه سرورها و سرویس ها در یک جا با Elasticsearch، Logstash و Kibana، که معمولاً کنار Prometheus و Grafana برای متریک و هشدار به کار می رود. این خدمت برای تیمی است که برای پیدا کردن علت خطا به چند سرور SSH می زند و لاگ ها را با grep می گردد، یا کاربران زودتر از خودش متوجه کندی سایت می شوند. پیکوسیستم Prometheus را نصب می کند، برای منابع سرور، دیتابیس و زمان پاسخ و نرخ خطای اپلیکیشن داشبورد Grafana می سازد، لاگ ها را با ELK یا Grafana Loki جمع آوری می کند و در Alertmanager هشدارهایی برای علائم واقعی مثل پر شدن دیسک یا افزایش خطای 5xx تعریف می کند. در پایان داشبوردهای ذخیره شده در گیت، فهرست هشدارها با اقدام لازم برای هر کدام و لاگ مرکزی با سیاست نگهداری مستند را تحویل می گیرید.

چه زمانی به مانیتورینگ و لاگ (ELK و Grafana) نیاز دارید؟

  • برای پیدا کردن علت خطا باید به چند سرور SSH بزنیم و لاگ ها را با grep بگردیم.
  • Prometheus داریم ولی هشدارها آن قدر زیادند که کسی نگاهشان نمی کند.
  • کاربران زودتر از ما متوجه کندی سایت می شوند.
  • لاگ ها بعد از چند روز پاک می شوند و بعد از حادثه چیزی برای بررسی نمی ماند.

مانیتورینگ و لاگ (ELK و Grafana) شامل چه کارهایی است؟

01

جمع آوری متریک

نصب Prometheus و exporterهای مناسب مثل node_exporter، mysqld_exporter و cAdvisor، و در کوبرنتیز kube-prometheus-stack.

02

داشبوردهای Grafana

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

03

لاگ مرکزی

جمع آوری لاگ با Grafana Loki و Promtail یا با Elasticsearch، Logstash و Kibana، همراه سیاست نگهداری متناسب با فضای دیسک.

04

قواعد هشدار

تعریف هشدار در Alertmanager بر اساس علائم واقعی مثل پر شدن دیسک، افزایش خطای 5xx یا تأخیر پاسخ، و ارسال به ایمیل، پیامک یا پیام رسان سازمان.

05

ردیابی درخواست ها

در صورت نیاز، راه اندازی OpenTelemetry با Tempo یا Jaeger برای دنبال کردن یک درخواست بین سرویس ها.

بعد از مانیتورینگ و لاگ (ELK و Grafana) چه چیزی تحویل می گیرید؟

  • داشبوردهای Grafana آماده و ذخیره شده در گیت
  • فهرست قواعد هشدار با اقدام لازم برای هر هشدار
  • لاگ مرکزی با سیاست نگهداری مستند
  • راهنمای افزودن سرور یا سرویس جدید به مانیتورینگ

راهنمای مانیتورینگ و لاگ (ELK و Grafana)

Grafana Loki با Promtail یا Grafana Alloy؟

بیشتر آموزش های Grafana Loki برای ارسال لاگ از Promtail استفاده می کنند، ولی Grafana توسعه Promtail را متوقف کرده و Grafana Alloy را جایگزین آن معرفی کرده است. Alloy همان جمع آوری لاگ را انجام می دهد و متریک و trace را هم می تواند بفرستد. به همین دلیل روی نصب های جدید از Alloy استفاده می کنیم و Promtailهای موجود را با برنامه منتقل می کنیم.

نکته مهم تر از خود ابزار، labelهاست. Loki لاگ ها را بر اساس label دسته بندی می کند و گذاشتن مقادیر پرتنوع مثل شناسه کاربر، IP یا request_id در label، تعداد streamها را بسیار زیاد و Loki را کند می کند. این مقادیر باید داخل متن لاگ بمانند و هنگام جست وجو با LogQL فیلتر شوند.

Grafana Loki با Docker Compose برای شروع کافی است؟

برای حجم کم تا متوسط لاگ، Loki در حالت monolithic که همه اجزا را در یک فرایند اجرا می کند، همراه Grafana و Prometheus در یک فایل Docker Compose به خوبی کار می کند. دو شرط دارد: داده ها روی volume پایدار باشند و retention در compactor فعال شود، وگرنه لاگ ها هیچ وقت پاک نمی شوند و دیسک پر می شود.

وقتی حجم لاگ روزانه زیاد شد یا به دسترس پذیری بالا نیاز داشتید، Loki را با ذخیره سازی سازگار با S3 مثل MinIO و به شکل توزیع شده روی کوبرنتیز اجرا می کنیم. شروع با Compose مسیر رشد را نمی بندد.

اشتباهات رایج در داشبورد مانیتورینگ و هشدار

رایج ترین مشکل، هشدار روی علت به جای علامت است. CPU بالای 90 درصد به خودش مشکل نیست؛ افزایش زمان پاسخ یا نرخ خطای 5xx مشکل است. قاعده هشداری که بند for ندارد، با هر جهش کوتاه پیام می فرستد و تیم را به نادیده گرفتن هشدارها عادت می دهد.

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

منابع لازم برای راه اندازی ELK و مانیتورینگ به چه عواملی بستگی دارد؟

حجم لاگ روزانه و مدت نگهداری، اندازه دیسک را تعیین می کنند. Elasticsearch رم زیادی هم می خواهد؛ heap آن معمولاً حدود نیمی از رم سرور و کمتر از حدود 31 گیگابایت تنظیم می شود و بقیه رم برای cache فایل سیستم می ماند.

در بخش متریک، تعداد سری های زمانی فعال مهم است که از تعداد سرورها، exporterها و labelها به دست می آید. عوامل دیگر نیاز به دسترس پذیری بالا برای خود سیستم مانیتورینگ، راه اندازی tracing با OpenTelemetry و تعداد تیم هایی است که دسترسی و داشبورد جداگانه می خواهند.

مراحل مانیتورینگ و لاگ (ELK و Grafana)

  1. 01

    شناخت سرویس ها

    مشخص می کنیم کدام سرویس ها برای کسب وکار شما مهم ترند و «سالم بودن» هر کدام با چه عددی سنجیده می شود.

  2. 02

    نصب و جمع آوری

    Prometheus، exporterها و سیستم لاگ را نصب می کنیم و داده ها را از سرورها و کانتینرها جمع می کنیم.

  3. 03

    داشبورد و هشدار

    داشبوردها و قواعد هشدار را می سازیم و آستانه ها را با داده واقعی تنظیم می کنیم.

  4. 04

    تنظیم نهایی و تحویل

    در یک دوره توافق شده هشدارها را کنار تیم شما دنبال می کنیم، هشدارهای بی فایده را حذف می کنیم و مستندات را تحویل می دهیم.

سؤالات متداول درباره مانیتورینگ و لاگ (ELK و Grafana)

این خدمت با مانیتورینگ Zabbix چه فرقی دارد؟

Zabbix برای پایش در دسترس بودن سرورها و تجهیزات شبکه مناسب است و آن را در قرارداد پشتیبانی ارائه می دهیم. این خدمت برای تیم هایی است که متریک اپلیکیشن، کانتینرها و لاگ ها را کنار هم می خواهند. در بعضی سازمان ها هر دو کنار هم کار می کنند.

راه اندازی ELK بهتر است یا Grafana Loki؟

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

لاگ ها چه مدت نگهداری می شوند؟

مدت نگهداری را با شما تعیین می کنیم و فضای دیسک را بر همان اساس برآورد می کنیم. لاگ های امنیتی را معمولاً طولانی تر و روی فضای جداگانه نگه می داریم تا در بررسی حادثه در دسترس باشند.

جست وجوهای مرتبط

  • Grafana Loki
  • داشبورد مانیتورینگ
  • مدیریت لاگ
  • نرم افزار مدیریت لاگ
  • Grafana Loki Prometheus
  • Grafana Loki Promtail
  • Grafana Loki Docker Compose

استعلام

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

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

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

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