معرفی ابزار های لاگ گیری

معرفی ابزار های لاگ گیری

لاگ گیری چیست؟

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

INFO

همانطور که از نامش پیداست این لاگ ها حاوی پیام های اطلاعاتی هستند و اطلاعاتی را پیرامون برنامه و عملکرد آن می دهند.

WARNING

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

DEBUG

به طور خلاصه هر اطلاعاتی را که کمک می کند تا باگ های برنامه را یافته و رفع کرد را در این سطح از لاگ ذخیره می کنند مانند : پیام های خطای دریافتی به هنگام یک درخواست Http.

TRACE

در این سطح اطلاعات دقیق تر و در سطح ریز تری نسبت به DEBUG ذخیره می شود. توسعه دهندگان در این سطح به دنبال جزئیاتی از رفتار برنامه هستند برای مثال وقتی به دنبال عملکرد بخش خاصی از یک تابع هستند از این سطح لاگ استفاده می کنند.

ERROR

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

FATAL

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

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

اولین کسی باشید که به این سؤال پاسخ می‌دهید

ابزارها

1. Logstash

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

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

این برنامه انواع داده های لاگ های  Apache، Windows Event Logs، داده های مربوط به پروتکل های شبکه و موارد دیگر را کنترل می ‌کند. همچنین می ‌تواند درخواست های Http و داده های Response را نیز کنترل کند.
این ابزار فیلتر های متنوعی را ارائه می دهد که به کاربر کمک می ‌کند تا با تجزیه و تغییر داده ها، اطلاعات بیشتری از داده بدست بیاورد.

برای مشاهده و مدیریت لاگ های جمع آوری شده توسط Logstash ،  معمولا ELK را پیشنهاد می دهند.

ELK Stack چیست؟

ELK مخفف Elasticsearch و Logstash و Kibana است.
Logstash داده ها را از منابع مختلف جمع آوری کرده و بعد از پردازش آن ها را در Elasticsearch ذخیره می ‌کند.
Kibana یک رابط وب هست که به داده های Elasticsearch دست یافته و آن ها را برای کاربر به نمایش می ‌گذارد.

 معرفی ابزار های لاگ گیری

Logstash ورودی و خروجی Elasticsearch را برای خواندن و نوشتن در Elasticsearch آماده می ‌کند. این ابزار داده ها را با پروتکل http به Elasticsearch ارسال می ‌کند.                  
Logstash با Kibana ارتباط مستقیمی ندارد بلکه از طریق Elasticsearch در ارتباط هستند.

2. Logentries

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

با سیستم عامل های Linux, Windows, Mac, CoreOs, SmartOs و بسیاری دیگر سازگار است و برای جمع آوری داده‌ی لاگ از آنها می ‌تواند به صورت مستقل آن ها را دریافت کند و هم اینکه از ابزار هایی مانند Logstash استفاده کند. همچنین با بسیاری از زبان های برنامه نویسی از جمله: Android, GoLang, Java, node.js, PHP, Python, Ruby, Javascript و بسیاری دیگر سازگار است.

این ابزار توانایی دریافت داده های لاگ با هر فرمت و قالبی را دارد و از محیط های زیادی مانند :

server, application, database, firewall, load balancer, router و موارد دیگر می تواند لاگ گیری کند.

این ابزار با یک زبان جست و جو مانند SQL داده ها را تجزیه و تحلیل کرده و به راحتی می ‌تواند محاسباتی مانند میانگین، مجموع، حداکثر و ... را انجام داده و داده ها را مرتب سازی کند.

با این ابزار می توان به جای جست و جوی کلمات یا عبارات از Regex استفاده کرد.

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

از آنجایی که Logentries داده ها را به صورت real time بررسی و تحلیل می ‌کند پیام هشدار را در عرض چند ثانیه ارسال می‌کند.
ویژگی ها

· جست و جو و نظارت real time

· سازگاری بدون در نظر گرفتن اندازه، قالب یا محیط

· تجزیه و تحلیل و نمایش

· گزارش و هشدار به صورت real time

· امنیت بالا برای حفاظت از داده ها

· قابلیت ادغام شدن با برترین ابزار های چت و نظارت

3. Sentry

 معرفی ابزار های لاگ گیری

یک ابزار open-source است که از سراسر برنامه شما به صورت real time خطاها را جمع آوری می ‌کند تا توسعه دهندگان به راحتی بتوانند این خطا ها را رفع کنند.
این ابزار بسیاری از زبان های برنامه نویسی از قبیل :Javascript, Python, Ruby, Node, Go, Android, Php و ... و همچنین بسیاری از فریم ورک ها از قبیل:React, Django, Rails, Angular, Laravel, Swift, Vue و ... را پشتیبانی می ‌کند که تقریبا همه نوع برنامه قابل تصور را پوشش می ‌دهد.

کار با این ابزار بسیار ساده بوده به همین دلیل بیش از 60 هزار سازمان و بیش از 1 میلیون برنامه نویس به طور فعال از این ابزار استفاده می‌کنند.

هر خطایی را که در برنامه ایجاد شده باشد را با جزئیات نمایش داده و خطاها را از طریق ایمیل، پیام کوتاه، Slack و ... در اختیار کاربرانش قرار می ‌دهد.
Sentry با ابزار ها و پلتفرم های زیادی قابل ادغام است و برای نمایش لاگ ها می ‌تواند از ابزار‌های دیگر نیز استفاده کند.

4. Beats

یک منتقل کننده ی داده، open-source می ‌باشد که بر روی سرور نصب می ‌شود تا داده های عملیاتی را به Elasticsearch ارسال کند.
beats هم می ‌تواند داده ها را از طریق Logstash که داده ها را قبل از نمایش دادن در kibana تغییر داده و پردازش می ‌کند، ارسال کند و هم به صورت مستقیم به Elasticsearch ارسال کند.

این ابزار نیاز به منابع زیادی برای اجرا شدن ندارد.
beats برای لاگ گیری از ابزار های زیر استفاده می ‌کند:

Auditbeat

یک ابزار برای انتقال است که روی سرور نصب شده تا فعالیت های کاربران و فرآیند های موجود بر روی سیستم را بررسی کند. به عنوان مثال داده های audit در لینوکس را جمع آوری می ‌کند و شما می ‌توانید بر آن‌ ها نظارت داشته باشید و همچنین این داده ها را به صورت real time برای تجزیه و تحلیل به Elastic Stack ارسال می ‌کند.

Filebeat

هنگامی  که تعداد زیادی سرور، ماشین مجازی و ... لاگ تولید می ‌کنند استفاده از SSH را فراموش کرده و از Filebeat استفاده کنید. Filebeat کمک می ‌کند تا با روشی آسان انتقال و متمرکز کردن لاگ ها و فایل ها را به Elasticsearch انجام دهید.

Functionbeat

به عنوان یک تابع در محیط سرور مستقر می ‌شود تا داده ها را از طریق سرویس‌های ابری (cloud service) به Elastic Stack ارسال کند.

Heartbeat

بر روی ریموت سرور نصب می ‌شود و مشخص می ‌کند که خدمات در دسترس هستند یا خیر و برای موارد امنیتی و سطح دسترسی استفاده می ‌شود.

Journalbeat

یکی از سرویس های جمع آوری و ذخیره ی لاگ های سیستم Systemd journals است که Journalbeat این لاگ ها را جمع آوری کرده و به Elasticsearch و یا Logstash منتقل می ‌کند.

Metricbeat

یک روش برای انتقال است که روی سرور نصب شده و به صورت دوره ای معیار‍‌‌های مربوط به سیستم و سرویس هایی که روی سرور کار می‌کنند از جمله Apache, HAProxy, MongoDB, MySQL, Nginx, PostresSQL, Redis, System, Zookeeper جمع آوری کرده و به Elasticsearch و یا Logstash منتقل می ‌کند.

Packetbeat

یک آنالیزور  network packetاست که اطلاعات host و کانتینر را به Elasticsearch و یا Logstash منتقل می ‌کند.

Winlogbeat

به عنوان یک سرویس در ویندوز نصب می ‌‌شود و لاگ رویداد های ویندوز را به Elasticsearch و یا Logstash منتقل می ‌کند. رویدادهایی مانند: application events, hardware events, security events, system events

5. Fluentd

یک ابزار مبتنی بر فضای ابری open-source و کاملا رایگان برای جمع آوری لاگ است که کاربر را قادر می ‌سازد معماری سازگار Log All Everything را با سیستم های خیلی زیادی داشته باشد.

 معرفی ابزار های لاگ گیری

این ابزار می ‌تواند داده ها را real time برای ایجاد فایل های لاگ، نظارت و مدیریت بر روی این فایل ها      جمع آوری کند.

این ابزار به مراتب توسط کاربران نرم افزارهایی مانند :  GCP، Docker، Elasticsearch استفاده می ‌شود.

ویژگی ها کلیدی Fluentd :

· یکپارچه کردن لاگ گیری با JSON  : این ابزار سعی دارد تا حد امکان ساختار داده های خود را json کند این کار به این ابزار اجازه می ‌دهد تا تمامی جنبه های لاگ گیری (جمع آوری، مرتب سازی، buffering و خروجی) را یکپارچه کند.

· معماری Pluggable : این ابزار دارای یک سیستم پلاگین انعطاف پذیر است که به جامعه اجازه ی گسترش آن را می ‌دهد. با استفاده از این پلاگین ها سریع تر و بهتر می ‌توان از داده ی لاگ ها استفاده کرد.

· حداقل منابع را نیاز دارد : این ابزار با زبان های C و Ruby نوشته شده است و به منابع بسیار کمی  برای اجرا نیاز دارد. نمونه ابتدایی آن بر روی 30-40 مگابایت حافظه کار می ‌کند.

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

 معرفی ابزار های لاگ گیری

Fluentd قابلیت نصب با تکنولوژی های زیر را دارد:

· PRM package (Red Hat Linux)

· Deb package (Ubuntu/Debian Linux)

· MSI package (Windows msi)

· Ruby Gem

· Source (git)

شما می ‌توانید از بسیاری از رابط های رایگان دیگر مانند Kibana برای رابط کاربری این ابزار استفاده کنید. این ابزار همچنین برای تجزیه و تحلیل می ‌تواند با ابزار هایی مانند MongoDB، Elasticsearch، InfluxDB ادغام و یکپارچه شود.

6. Solarwinds Security Event Manager

 معرفی ابزار های لاگ گیری

یک سیستم بسیار جامع مدیریت لاگ می ‌باشد که به صورت real time مانیتورینگ لاگ را انجام می ‌دهد و در دسترسی به لاگ ها بسیار کمک کننده است. این نرم افزار بر روی ویندوز سرور اجرا می ‌شود ولی فقط محدود به event لاگ های ایجاد شده در ویندوز نیست.
این نرم افزار سیستم عامل های  Windows 10 و بالاتر، Windows Server 2012 و بالاتر و همچنین سیستم های مبتنی بر فضای ابری Hypervisor, AWS, Ms Azure را پشتیبانی می ‌کند.
از ویژگی های شگفت انگیز این نرم افزار تایید اطلاعات موجود در فایل های لاگ با دنبال کردن real time    داده‌ ها به صورت جداگانه می ‌باشد. این یک ویژگی امنیتی عالی برای مقابله با تهدید مداوم و پیشرفته‌ی هکرها برای تغییر فایل های لاگ است.
این نرم افزار به صورت اتوماتیک گزارشات HIPAA, PCI DSS, SOX, ISO, NCUA, FISMA, FERPA, GLBA, NERC CIP, GPG13, DISA STIG را تهیه می ‌کند، گزارشاتی که برای عیب یابی سیستم، مشکلات و عیوب سیستم را برجسته و پر رنگ تر می ‌کنند.

این ابزار با استفاده از  Event Log Analizer  داده ها را به صورت real time از دستگاه ها، برنامه ها، سرورها و پایگاه داده ها جمع آوری و سازماندهی می ‌کند. Event Log مشکلات امنیتی را با تجزیه و تحلیل پیدا کرده و حل می ‌کند. همچنین تشخیص و دنبال کردن اتفاقات مخرب در شبکه را در کوتاه ترین زمان ممکن انجام می ‌دهد.

از ویژگی های اصلی Security Event Manager می توان موارد زیر را نام برد:

· جمع آوری لاگ ها و تجزیه و تحلیل آنها

· جست و جو و مرتب سازی قدرتمند

· نمایش لاگ به صورت real time

· برچسب زدن به لاگ ها

· ادغام کردن پلتفرم orion

7. Sematext Logs

 معرفی ابزار های لاگ گیری

یک ابزار مدیریت لاگ می  باشد که امکان جمع آوری، ذخیره سازی، و index کردن لاگ را به شما می ‌دهد و به صورت real time به آنالیز داده لاگ هایی که از منابع مختلفی جمع آوری شده‌اند می ‌پردازد.

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

Sematext برای نمایش دادن لاگ های گرفته شده، از ابزار Integration استفاده می ‌کند. این ابزار با استفاده از داده هایی که به آن انتقال یافته، تجزیه و تحلیل را انجام می دهد.
 این ابزار API های Elasticsearch و گیرنده های syslog را در اختیار شما قرار می ‌دهد تا شما از ابزار های open-source مورد علاقه‌ی خودتان برای جمع آوری لاگ استفاده کنید.
Sematext علاوه بر استفاده از ابزار Integration، از Kibana هم استفاده می ‌کند. این ابزار دارای راه اندازی آسان و open-source است و قابلیت استفاده از فضای ابری برای سرورها، کانتینرها و لاگ برنامه ها را دارد.

Sematext برای جمع آوری داده های لاگ از  Logagent استفاده می ‌کند که یک ابزار سبک و
 open-source برای انتقال داده ها به Elasticsearch یا Sematext Cloud است. این ابزار به دلیل استفاده ی کم از حافظه و سربار کم برای پردازنده و ساختار مناسب ایجاد لاگ به یک جایگزین عالی برای Logstash تبدیل شده است.

 

قابل ارائه با :

· Linux Systemd

· Linux Upstart

· Windows service

· Mac OS X Launchd service

· Docker

· Docker Swarm

· Kubernetes

ویژگی های اصلی Logagent:

· نصب و راه اندازی آسان و سریع

· سربار کم

· سازگاری با Elasticsearch

· لاگ Routing

· بهینه سازی داده های لاگ و دسته بندی

· انتقال ایمن و مطمئن داده های لاگ

 معرفی ابزار های لاگ گیری

جمع بندی

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

منابع

 

https://www.elastic.co/beats/auditbeat

https://www.elastic.co/beats/filebeat

https://www.elastic.co/beats/functionbeat

https://www.elastic.co/beats/heartbeat

https://www.elastic.co/guide/en/beats/journalbeat/current/journalbeat-overview.html

https://www.elastic.co/beats/metricbeat

https://www.elastic.co/beats/packetbeat

https://www.elastic.co/beats/winlogbeat

https://www.solarwinds.com/log-analyzer

https://sematext.com/logsene/?utm_source=softwaretestinghelp&utm_medium=log-management-software

https://www.solarwinds.com/security-event-manager

https://www.solarwinds.com/security-event-manager/use-cases/event-log-analyzer-tool

https://www.solarwinds.com/security-event-manager/use-cases/it-compliance-report

https://www.fluentd.org/architecture

https://www.fluentd.org/architecture

https://www.comparitech.com/net-admin/

https://stackshare.io/

https://docs.logentries.com/docs

https://sentry.io/welcome/

https://sentry.io/for/web/

https://docs.sentry.io/