برنامه نویسی

راهنمای لاگ های ساخت یافته [Best Practices included]

این مقاله در ابتدا در وبلاگ SigNoz ارسال شده است و توسط Joseph Chege نوشته شده است.

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

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

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

لاگ های ساختاریافته چیست؟

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

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

ورود به سیستم ساختاریافته این چالش ها را حل می کند و فضا را برای تکنیک های تحلیلی اضافی ایجاد می کند. هدف ثبت ساختار ایجاد داده های قابل خواندن توسط ماشین برای عملکردهای پیشرفته است. گزارش‌های ساختاریافته تضمین می‌کنند که هر ورودی گزارش از مجموعه‌ای از فیلدها یا جفت‌های کلید-مقدار در قالبی کاملاً ساختاریافته و سازگار تشکیل شده است که به راحتی قابل تجزیه و تحلیل است.

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

مثال ساده زیر را از یک پیام لاگ بدون ساختار در نظر بگیرید:

[info] [Friday, 20-Jan-23 11:17:55 UTC] The application has started.
[Error] [Friday, 20-Jan-23 11:17:55 UTC] An error occurred while processing this request.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

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

{
  "timestamp": "Friday, 20-Jan-23 11:17:55 UTC",
  "level": "info",
  "message": "The application has started."
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

با جفت‌های کلید-مقدار، می‌توانید اطلاعات معنی‌داری بیشتری به گزارش‌های خود اضافه کنید. در اینجا مثالی از ورود به سیستم با استفاده از یک قالب ساختاریافته با جزئیات بیشتر آورده شده است error نوع:

{
  "timestamp": "Friday, 20-Jan-23 11:17:55 UTC",
  "level": "error",
  "message": "An error occurred while processing this request",
  "error": {
    "code": "500",
    "message": "Internal server error",
    "details": "Error occurred when sending POST data query."
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چرا ورود به سیستم ساختاریافته مورد نیاز است؟

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

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

بهترین روش ها برای ثبت ساختار یافته

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

  • برای مثال، اگر JSON را انتخاب می کنید، همیشه از یک قالب ثابت استفاده کنید. شما باید به آن یک فرمت در سراسر برنامه خود پایبند باشید. این کار تجزیه و تحلیل داده های جمع آوری شده، تجزیه و تحلیل گزارش ها و ارائه بازخورد به موقع را آسان تر می کند.
  • به یاد داشته باشید که اطلاعات مربوطه را در ورودی های گزارش خود بگنجانید. فیلدهایی مانند مهرهای زمانی، سطوح گزارش و داده های مربوط به زمینه (اطلاعات کاربر و جزئیات درخواست) درک سابقه برنامه شما را آسان تر می کند.
  • از سطوح استاندارد گزارش برای ورودی های گزارش خود استفاده کنید. این شامل info، warning، error، debuggingو غیره. چنین شیوه‌هایی این امکان را فراهم می‌کند که ویژگی‌های فیلتر کردن داده‌های گزارش خود را داشته باشید.
  • به یاد داشته باشید که کلیدهای منحصر به فرد را در ورودی های گزارش اضافه کنید. این امر جستجو و فیلتر کردن داده های گزارش را با استفاده از ابزارهایی مانند SigNoz آسان می کند.
  • شیوه‌های ثبت امنیت را برای نظارت بر نقض‌های امنیتی، فعالیت‌های مشکوک و سایر تهدیدات احتمالی ایجاد کنید.
  • قبل از فرستادن برنامه خود به تولید، همیشه لاگ های خود را آزمایش و تأیید کنید. این به شما کمک می کند تا مطمئن شوید که برنامه شما لاگ ها را به درستی و در قالب مورد انتظار تولید می کند.
  • شما همچنین می توانید گزارش های خود را با ردیابی ادغام کنید. داشتن سیگنال های تله متری مرتبط می تواند به شما کمک کند تا بینش های متنی را سریعتر هدایت کنید.

شروع کار با ورود به سیستم ساختاریافته

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

مرحله بعدی انتخاب ابزار تجزیه و تحلیل گزارش است. هنگام انتخاب یک ابزار تجزیه و تحلیل گزارش، سه چیز باید در نظر گرفته شود – جذب، پرس و جو و ذخیره سازی. بر اساس این پارامترها و مورد استفاده خود، می توانید ابزار تجزیه و تحلیل گزارش را انتخاب کنید که مناسب شما باشد. SigNoz یک ابزار مدیریت لاگ منبع باز است که می توانید از آن برای لاگ ساختاریافته استفاده کنید.

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

شروع کار با SigNoz آسان است. SigNoz را می توان تنها در سه مرحله با استفاده از یک اسکریپت نصب ساده بر روی رایانه های macOS یا Linux نصب کرد.

اسکریپت نصب به طور خودکار Docker Engine را روی لینوکس نصب می کند. با این حال، در macOS، قبل از اجرای اسکریپت نصب، باید Docker Engine را به صورت دستی نصب کنید.

git clone -b main https://github.com/SigNoz/signoz.git
cd signoz/deploy/
./install.sh
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

می‌توانید برای دستورالعمل‌های نحوه نصب SigNoz با استفاده از Docker Swarm و Helm Charts از اسناد ما دیدن کنید.

اسناد استقرار
اسناد استقرار

نتیجه

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

یک ابزار تجزیه و تحلیل گزارش مانند SigNoz می‌تواند به شما کمک کند تا به سرعت از داده‌های گزارش‌ها اطلاعات دریافت کنید و در عین حال از مدیریت و ذخیره‌سازی کارآمد اطمینان حاصل کنید. در اینجا می توانید مخزن SigNoz GitHub را بررسی کنید.


پست های مرتبط

یک جایگزین سبک متن باز ELK

گزارش های OpenTelemetry – مقدمه و پیاده سازی کامل

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا