مقایسهٔ ابزارهای مدیریت لاگ: Splunk، ELK، Grafana Loki، Seq و LogMug

مقایسهٔ ابزارهای مدیریت لاگ: Splunk، ELK، Grafana Loki، Seq و LogMug
در این مقاله می‌خوانید
  1. پیش از مقایسه: چهار سؤالی که انتخاب را تعیین می‌کنند
  2. Splunk: کامل، بالغ، و پرهزینه در عمل
  3. Elastic Stack (ELK) و OpenSearch
  4. Grafana Loki: ارزان، چون همه‌چیز را ایندکس نمی‌کند
  5. Seq: ساده و نزدیک به دنیای ⁦.NET⁩
  6. LogMug: فقط لاگ، میزبانی‌شده در ایران
  7. جدول مقایسه
  8. واقعیت‌های تیم‌های ایرانی: خرید، تحریم و دسترسی
  9. کدام را کی انتخاب کنم
  10. منابع و مطالعهٔ بیشتر

هر بار که تیمی از من می‌پرسد «برای لاگ چه ابزاری بگذاریم؟»، جواب اولم یک سؤال است: «روزی چقدر لاگ دارید، و چه کسی قرار است این ابزار را سرپا نگه دارد؟» بیشتر مقایسه‌هایی که در اینترنت می‌بینم، فهرست قابلیت‌ها را کنار هم می‌گذارند. ولی در سیستم‌هایی که دیده‌ام، ابزار لاگ تقریباً هیچ‌وقت به‌خاطر یک قابلیت کم شکست نخورده؛ به‌خاطر هزینه‌ای شکست خورده که کسی پیش‌بینی نکرده بود — هزینهٔ پول، یا هزینهٔ آدمی که باید شب‌ها دیسک خوشه را خالی کند.

این مقاله پنج گزینه را از همین زاویه کنار هم می‌گذارد: Splunk، Elastic Stack (و فورک آن OpenSearch)، Grafana Loki، Seq و LogMug. LogMug را خودم ساخته‌ام، پس سعی کرده‌ام دربارهٔ آن سخت‌گیرتر از بقیه باشم و صریح بگویم کجا انتخاب درستی نیست. اگر هنوز مطمئن نیستید اصلاً به ابزار متمرکز نیاز دارید، اول راهنمای مدیریت متمرکز لاگ را بخوانید.

پیش از مقایسه: چهار سؤالی که انتخاب را تعیین می‌کنند

  1. حجم روزانه. ده مگابایت در روز، ده گیگابایت در روز و ده ترابایت در روز، سه مسئلهٔ کاملاً متفاوت‌اند. اگر عدد دقیقی ندارید، روش تخمینش را در مقالهٔ مدت نگه‌داری و حجم لاگ گفته‌ام.
  2. فقط لاگ، یا لاگ و متریک و trace؟ اگر یک «پلتفرم مشاهده‌پذیری» کامل می‌خواهید، دامنهٔ انتخاب عوض می‌شود.
  3. بار عملیاتی. ابزار خودمیزبان یعنی کسی باید ارتقا بدهد، دیسک را پایش کند، بکاپ بگیرد و وقتی خوشه قرمز شد بیدار شود. اگر آن آدم را ندارید، ارزان‌ترین ابزار هم گران تمام می‌شود.
  4. واقعیت خرید و میزبانی. برای تیم‌های داخل ایران این سؤال گاهی از همهٔ سؤال‌های فنی تعیین‌کننده‌تر است. جدا به آن می‌پردازم.

Splunk: کامل، بالغ، و پرهزینه در عمل

Splunk قدیمی‌ترین و کامل‌ترین گزینهٔ این فهرست است و از سال ۲۰۲۴ بخشی از Cisco است. دو شکل دارد: Splunk Enterprise که روی سرور خودتان نصب می‌شود، و Splunk Cloud. معماری‌اش بر forwarderها (عامل‌هایی که روی سرورها لاگ را جمع می‌کنند)، indexerها و search headها استوار است.

نقطهٔ قوت اصلی‌اش SPL است — زبان جستجویی که با pipe کار می‌کند و از فیلتر ساده تا آمار، join و تشخیص الگو را پوشش می‌دهد. کسی که SPL را خوب بلد است، از دل لاگ خام گزارش‌هایی درمی‌آورد که در ابزارهای دیگر به کد نیاز دارند. اکوسیستم اپ‌ها، هشدارها، و محصولات امنیتی (SIEM) آن هم بی‌رقیب است و در سازمان‌های بزرگ، تیم امنیت اغلب دلیل اصلی وجودش است.

مدل هزینه بر اساس حجم دریافتی روزانه یا ظرفیت پردازش است و برای حجم‌های بزرگ، بالاست. این را از روی تجربهٔ تیم‌ها می‌گویم، نه با عدد؛ قیمت‌ها توافقی‌اند و بسته به قرارداد فرق می‌کنند. نسخهٔ رایگان (Splunk Free) هم وجود دارد که طبق مستندات خودش سقف حجم روزانهٔ کوچکی دارد و قابلیت‌هایی مثل احراز هویت کاربران و هشدار را ندارد — برای آزمایش خوب است، برای پروداکشن تیمی نه.

Elastic Stack (ELK) و OpenSearch

ELK یعنی Elasticsearch برای ذخیره و جستجو، Logstash برای پردازش، و Kibana برای رابط کاربری؛ امروز معمولاً Beats یا Elastic Agent هم جای جمع‌آوری را گرفته‌اند. Elasticsearch روی Lucene ساخته شده و هر فیلد را ایندکس می‌کند، به همین دلیل جستجوی متن آزاد و تجمیع (aggregation) روی میلیون‌ها سند در آن سریع است. زبان‌های جستجو: KQL و Lucene در Kibana، و ES|QL که زبان pipe-محور جدیدتر Elastic است.

دربارهٔ مجوز باید دقیق بود: Elastic در ۲۰۲۱ مجوز را از Apache 2.0 به SSPL و Elastic License تغییر داد و در ۲۰۲۴ گزینهٔ AGPLv3 را هم اضافه کرد. واکنش آن تغییر اول، OpenSearch بود: فورکی با مجوز Apache 2.0 که AWS شروع کرد و حالا زیر بنیاد لینوکس اداره می‌شود. از نظر معماری و تجربهٔ کار، این دو هنوز بسیار شبیه‌اند.

نقطهٔ ضعف واقعی‌اش بار عملیاتی است. ایندکس کردن همه‌چیز یعنی دیسک زیاد و حافظهٔ زیاد. تنظیم heap جاوا، تعداد shardها، سیاست چرخهٔ عمر ایندکس (ILM)، ارتقای نسخه بدون از دست دادن داده، و خوشه‌ای که با پر شدن دیسک فقط‌خواندنی می‌شود — این‌ها کار روزمرهٔ کسی است که ELK را نگه می‌دارد. در تیم‌های کوچکی که دیده‌ام، ELK معمولاً با شوق نصب شده و شش ماه بعد کسی جرئت نکرده ارتقایش بدهد.

Grafana Loki: ارزان، چون همه‌چیز را ایندکس نمی‌کند

Loki فلسفهٔ برعکس دارد: فقط برچسب‌ها (labels) را ایندکس می‌کند — مثل نام سرویس، محیط و میزبان — و خود متن لاگ را فشرده در chunkهایی روی ذخیره‌ساز object (مثل S3 یا MinIO) یا دیسک می‌گذارد. جستجو با LogQL انجام می‌شود: اول با برچسب‌ها جریان‌های لاگ را محدود می‌کنید، بعد روی متن آن‌ها فیلتر می‌زنید.

نتیجه، هزینهٔ ذخیره‌سازی بسیار کمتر از Elasticsearch است، و اگر از قبل Grafana و Prometheus دارید، Loki طبیعی‌ترین ادامه است: لاگ و متریک کنار هم در یک داشبورد. مجوز Loki از ۲۰۲۱ AGPLv3 است. جمع‌آوری معمولاً با Grafana Alloy (جانشین Promtail) انجام می‌شود و نسخه‌های جدید OTLP را هم مستقیم می‌پذیرند.

بهایش دو چیز است. اول، جستجوی متن آزاد در بازهٔ طولانی کند است، چون Loki باید chunkها را باز کند و بخواند. دوم، طراحی برچسب‌ها حساس است: اگر چیزی با تنوع زیاد مثل شناسهٔ کاربر را برچسب کنید، تعداد جریان‌ها منفجر می‌شود و کارایی افت می‌کند. Loki پاداش کسی را می‌دهد که مدل داده‌اش را از پیش فکر کرده.

Seq: ساده و نزدیک به دنیای ⁦.NET⁩

Seq محصول شرکت استرالیایی Datalust است و از اول برای لاگ ساخت‌یافته ساخته شده؛ همان تیمی که پشت Serilog هم هست. معمولاً روی یک سرور ویندوز یا لینوکس (یا Docker) اجرا می‌شود، با پکیج Serilog.Sinks.Seq یا OTLP لاگ می‌گیرد، و زبان فیلترش شبیه SQL و برای برنامه‌نویس آشناست. هشدار، داشبورد و نگه‌داری بر اساس سیاست هم دارد.

Seq برای تیم‌های ⁦.NET⁩ کوچک و متوسط تجربهٔ بسیار خوبی است: نصبش نیم ساعت طول می‌کشد و تقریباً نگه‌داری نمی‌خواهد. مجوزش تجاری و بر اساس تعداد کاربر است و برای استفادهٔ تک‌نفره مجوز رایگان دارد. محدودیتش این است که برای حجم‌های بسیار بزرگ و تیم‌های چندزبانهٔ بزرگ، طراحی نشده — یا دست‌کم مسیر طبیعی‌اش نیست.

LogMug: فقط لاگ، میزبانی‌شده در ایران

LogMug سرویس میزبانی‌شده (SaaS) است و فقط لاگ را پوشش می‌دهد. لاگ را از سه راه استاندارد می‌گیرد: OpenTelemetry روی OTLP/HTTP، همان پروتکل Seq (یعنی برنامه‌ای که Serilog دارد با Serilog.Sinks.Seq و بدون پکیج اختصاصی وصل می‌شود)، و JSON ساده با HTTP. جستجو با متن آزاد و فیلتر سطح، سرویس و محیط است؛ نمودار تعداد لاگ در زمان دارد؛ با یک کلیک همهٔ لاگ‌های یک trace_id را در همهٔ سرویس‌ها نشان می‌دهد؛ و خطاهای هم‌ریشه را با اثرانگشت stack trace گروه می‌کند. شمارهٔ کارت، توکن و ویژگی‌هایی مثل password پیش از ذخیره حذف می‌شوند. داده در مرکز دادهٔ داخل ایران است، رابط فارسی است و پرداخت ریالی.

چیزهایی که ندارد را هم باید گفت: هشدار و اعلان روی خطا هنوز در حال ساخت است؛ داشبورد نمودار سفارشی، کوئری ذخیره‌شده و زبان کوئری pipe-محور مثل SPL یا LogQL ندارد؛ و متریک و trace کامل (APM) را پوشش نمی‌دهد — trace_id فقط برای پیوند دادن لاگ‌هاست. سهمیه و مدت نگه‌داری هر پلن در صفحهٔ سهمیه و محدودیت‌ها آمده است.

جدول مقایسه

ابزار مدل اجرا جستجو مدل هزینه بار عملیاتی جای درخشش
Splunk خودمیزبان یا ابری SPL (بسیار قوی) مجوز تجاری بر اساس حجم یا ظرفیت متوسط تا زیاد (خودمیزبان) سازمان بزرگ، امنیت و SIEM
Elastic / OpenSearch خودمیزبان یا ابری KQL، Lucene، ES|QL نرم‌افزار رایگان + سخت‌افزار زیاد؛ قابلیت‌های پیشرفته پولی زیاد جستجوی متن آزاد و تحلیل در حجم بالا
Grafana Loki خودمیزبان یا ابری LogQL نرم‌افزار رایگان + ذخیره‌ساز ارزان متوسط تیمی که Grafana و Prometheus دارد
Seq خودمیزبان فیلتر شبیه SQL مجوز تجاری بر اساس کاربر کم تیم ⁦.NET⁩ کوچک و متوسط
LogMug SaaS در ایران (سازمانی: روی سرور خودتان) متن آزاد + فیلتر اشتراک ماهانهٔ ریالی بر اساس حجم تقریباً صفر تیم ایرانی که فقط لاگ متمرکز می‌خواهد

واقعیت‌های تیم‌های ایرانی: خرید، تحریم و دسترسی

این بخش در مقایسه‌های خارجی نیست، ولی در عمل اغلب همین تصمیم را می‌گیرد.

  • خرید مجوز و سرویس ابری. Splunk، Elastic، Grafana Labs و Datalust شرکت‌های آمریکایی یا استرالیایی‌اند و فروش مستقیم به ایران، به‌خاطر مقررات صادرات و تحریم، در عمل ممکن نیست. Splunk Cloud، Elastic Cloud و Grafana Cloud برای تیم داخل ایران گزینهٔ قابل اتکایی نیستند: حتی اگر حسابی ساخته شود، هر لحظه ممکن است بسته شود و داده‌تان پشت آن بماند.
  • نسخه‌های متن‌باز خودمیزبان (OpenSearch، Elasticsearch با مجوز رایگان، Loki) از نظر فنی روی سرور داخلی اجرا می‌شوند. ولی دسترسی به مخزن ایمیج‌ها، مستندات و به‌روزرسانی‌ها از داخل ایران گاهی محدود است و تیم‌ها به mirror تکیه می‌کنند. این را در برنامهٔ ارتقا و وصله‌های امنیتی حساب کنید.
  • استفاده از نسخهٔ بدون مجوز محصولات تجاری، علاوه بر مسئلهٔ حقوقی، یعنی بدون پشتیبانی و بدون وصلهٔ امنیتی رسمی. برای ابزاری که همهٔ لاگ‌های سازمان را نگه می‌دارد، این ریسک کمی نیست.
  • محل داده. برخی سازمان‌ها سیاست داخلی دارند که دادهٔ مشتری نباید از کشور خارج شود. لاگ، دادهٔ مشتری دارد — حتی اگر فکر کنید ندارد.

کدام را کی انتخاب کنم

  • Splunk را نگه دارید اگر سازمان شما از قبل در آن سرمایه‌گذاری عمیقی کرده: صدها جستجوی ذخیره‌شده، هشدارهای امنیتی، داشبوردهای مدیریتی و آدم‌هایی که SPL بلدند. مهاجرت از چنین جایی پروژهٔ چندماهه است و فقط وقتی معنا دارد که هزینه یا مجوز واقعاً مسئله شده باشد. اگر چنین است، راهنمای مهاجرت از Splunk مسیر عملی با OpenTelemetry Collector را نشان می‌دهد.
  • Elastic یا OpenSearch را انتخاب کنید اگر حجم شما چند ترابایت در روز است، تیم عملیات اختصاصی دارید، و تحلیل متن آزاد سنگین یا کاربرد امنیتی می‌خواهید. در این مقیاس، LogMug انتخاب درستی نیست؛ برای آن ساخته نشده.
  • Loki را انتخاب کنید اگر Grafana و Prometheus مرکز مشاهده‌پذیری شماست و لاگ را کنار متریک می‌خواهید. اگر به متریک و trace کامل هم نیاز دارید، پشتهٔ Grafana (یا یک APM کامل) مسیر درست‌تری از LogMug است، چون LogMug فقط لاگ است.
  • Seq را انتخاب کنید اگر تیم کوچک ⁦.NET⁩ دارید، می‌خواهید سرور را خودتان نگه دارید، و مجوزش برایتان در دسترس است.
  • LogMug را انتخاب کنید اگر تیم شما در ایران است، می‌خواهید لاگ همهٔ سرویس‌ها امروز یک‌جا و قابل جستجو باشد، نمی‌خواهید خوشه‌ای را نگه دارید، و پرداخت ریالی و دادهٔ داخل کشور برایتان مهم است. چون روی استانداردها ساخته شده — OpenTelemetry و پروتکل Seq — اگر روزی خواستید به ابزار دیگری بروید، کدتان را عوض نمی‌کنید؛ فقط نشانی exporter را.

نکتهٔ آخر، که به نظرم از خود انتخاب مهم‌تر است: هر ابزاری که انتخاب کنید، کد را به آن گره نزنید. لاگ را با OpenTelemetry یا با یک sink استاندارد بفرستید، ساخت‌یافته بنویسید، و trace_id را در هر خط داشته باشید. آن وقت ابزار لاگ تصمیمی قابل برگشت است، نه ازدواج.

منابع و مطالعهٔ بیشتر

لاگ همهٔ سرویس‌هایتان را در یک جا جستجو کنید

C#، Java یا هر زبان دیگر — با چند خط پیکربندی وصل می‌شود. پلن رایگان کارت بانکی نمی‌خواهد.

شروع رایگان