ویرگول
ورودثبت نام
نوید خلیلیان
نوید خلیلیان
خواندن ۴ دقیقه·۲ سال پیش

سلام SigNoz ، خداحافظ ELK


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

ابزار های مختلفی در حوزه مانیتورینگ سرویس ها و اپلیکیشن ها وجود دارند که تقریبا همه روی سه موضوع Trace و Log و Metric مانور میدن. کار کردن با بعضی هاشون خیلی سخت و پیچیده بنظر میاد. بعضی ها هم خیلی ساده هستند ولی کامل نیستند.

با توجه به تجربه ای که داشتم از SigNoz میشه بعنوان یکی از کاملترین و ساده ترین ابزارها اسم برد. SigNoz یک ابزار متن باز هست که میتونید در گیت هاب سورس کدش رو مشاهده کنید.

اکثر سیستم های مانیتورنیگ از یک collector برای جمع آوری اطلاعات مربوط به Trace,Log,Metric استفاده میکنند. SigNoz برای اینکار از OpenTelemetry استفاده میکنه و اطلاعات جمع آوری شده رو توی یک پنل در اختیار شما قرار میده.

دقت کنید که گفتیم در یک پنل. یعنی نیاز نیست برای Trace به ابزاری مثل Jeager یا برای ویژال کردن دیتاهایی مثل Metric به ابزاری مثل Kibana رجوع کنید.

داکیومنت SigNoz خیلی کامله و برای همه زبان ها نمونه کد های کاملی رو قرار داده.

چون داکیومنت ها و مقالات خودش کامل و واضح هست دیگه من مثال نمیزنم و پیشنهاد میکنم طبق داکیومنت خودش برای پیاده سازی پیش برید. هر زبانی که توسط OpenTelemetry پشتیبانی بشه میتونه از SigNoz هم استفاده کنه.

برای اینکه ببینید چه زبان هایی توسط OpenTelemetry پشتیبانی میشه به این لینک نگاهی بندازید.


چه کارهایی میتونیم با SigNoz انجام بدیم؟

  • مانیتورینگ سرویس یا اپلیکیشن بر اساس معیار های مختلف مثل :
  • latency, requests per second, error rates
  • مانیتورینگ زیرساخت مثل میزان استفاده از CPU و Ram و Disk I/O و ...
  • ردیابی درخواست کاربر از زمان شروع تا جایی که response برای کاربر ارسال میشه.
  • تنظیم هشدار هایی بر اساس Metric ها. مثلا اگر میزان استفاده از CPU از 80 درصد بیشتر شد به ما هشدار بده.
  • کمک میکنه که بفهمیم در چه حالتی باگ بوجود اومده. یعنی میفهمیم که دقیقا کاربر چه کاری انجام داده که منجر به خطا شده.
  • بر اساس داشبورد ها و نمودار های مختلف میتونیم گزارشات مختلفی را ببینیم. مثلا ببینیم فلان API چقدر استفاده شده و در چه بازه زمانی زیر بار بوده.

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

در کل با این ابزار دیگه نیازی به Elastic,Logstash,Kibana,Grafana,Jaeger و خیلی چیزهای دیگه ندارید.

اینجا یدونه عکس داریم که معماری استفاده شده برای طراحی خود SigNoz رو میتونیم مشاهده کنیم

توضیحات بیشتر راجع به معماری SigNoz رو میتونید اینجا ببینید.

گام اول :Trace چیست؟

در واقع همونطور که موقع دیباگ کردن برنامه شما از Trace سورس کد استفاده میکنید برای اینکه بفهمید اشکال از کجاست، سرویس Trace در SigNoz همون دیتا هارو در محیط Production در اختیار شما قرار میده که لازم نباشه به سختی دنبال اشکال بگردید.یعنی از زمانی که یک درخواست به سمت سرویس شما میاد تا زمانی که خروجی به کاربر ارسال میشه اطلاعات کاملی از پارامتر های ارسالی کاربر، ارتباطات با دیتابیس ، ارتباطات با سرویس های خارجی و ... رو برای شما ذخیره میکنه که از روی اونها کامل متوجه اشکال میشید و نیاز به پیدا کردن خطا نباشید.

گام دوم: Log چیست؟

همونطور که میدونید شما برای کاربرد ها مختلفی نیاز به ثبت لاگ دارید. لاگ ها میتونند در سطوح مختلفی ذخیره بشن. مثلا در سطح Information یا Debug. ابزار SigNoz این امکان رو به شما میده که لاگ هارو بر اساس سطحی که نیاز دارید ذخیره کنید.

گام سوم: Metric چیست؟

برای توضیح Metric یک مثال میزنم. فرض کنید می خواهید یک حد آستانه در نظر بگیرید برای کار خاصی و اگر به اون حد رسید به شما هشدار داده بشه. مثلا اگر تعداد کاربران آنلاین از 1000 نفر بیشتر شد به شما هشدار داده بشه. به اینها میگن Metric. که البته این یک مثال ساده بود برای آشنایی با Metric ها.

گام چهارم: نصب SigNoz

برای نصب SigNoz پیشنهاد میکنم به داکیومنت خودش مراجعه کنید، چون بر اساس محیط های مختلف روش های نصب متفاوتی داره. شما میتونید بر اساس محیطی که دارید روش نصب رو بر اساس داکیومنت دنبال کنید.

داکیومنت نصب رو از اینجا ببینید

گام پنجم: بلاگ SigNoz

پیشنهاد میکنم یه نگاهی به بلاگ SigNoz به این آدرس بندازید. اونجا افراد مختلف برای زبان ها و پلتفرم های مختلف داکیومنت هایی از تجربه هاشون رو آوردن که میتونه خیلی کمک کننده باشه.


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

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



signozapmمانیتورینگelkبر اساس
Full Stack Developer - Dev Ops
شاید از این پست‌ها خوشتان بیاید