لاگ گیری چیست؟
لاگ گیری به ثبت داده ها در مورد عملکرد یک برنامه گفته می شود. از لاگ می توان برای نگهداری و اشکال زدایی برنامه، ایجاد آمارهای مربوط به برنامه و موارد دیگر استفاده کرد. لاگ گیری اطلاعات و دادههایی را در مورد آنچه برنامه انجام می دهد و نحوهی انجام آن ارائه می دهد که این اطلاعات باعث افزایش دید نسبت به برنامه می شود.
لاگ گیری کمک می کند تا پیچیدگی های موجود در برنامه مدیریت شوند و همچنین توسعه دهندگان دیگر می توانند با استفاده از این لاگ ها با برنامه ارتباط برقرار کنند.
در مرحله ی 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 مخفف Logstash ، Elasticsearch و Kibana است:
- Logstash داده ها را از منابع مختلف جمع آوری کرده و پس از پردازش، آن ها را در Elasticsearch ذخیره می کند.
- Elasticsearch یک موتور جستجو و تجزیه و تحلیل توزیع شده است که داده ها را به سرعت جستجو و تجزیه و تحلیل می کند.
- Kibana یک رابط وب هست که به داده های Elasticsearch دسترسی پیدا کرده و آنها را برای کاربر به نمایش می گذارد.
Logstash ورودی و خروجی Elasticsearch را برای خواندن و نوشتن در Elasticsearch آماده می کند. این ابزار داده ها را با پروتکل HTTP به Elasticsearch ارسال می کند. Logstash ارتباط مستقیمی با Kibana ندارد، بلکه این دو ابزار از طریق Elasticsearch با یکدیگر در ارتباط هستند.
عنوان تبلیغ: آموزش مدیریت دادهها با استفاده از ELK Stack
2. Logentries
Logentries یک راه حل سریع برای تجزیه و تحلیل داده های لاگ می باشد.
این ابزار با سیستم عامل های Linux, Windows, Mac, CoreOs, SmartOs و بسیاری دیگر سازگار است و میتواند بهصورت مستقل دادههای لاگ را از آنها جمعآوری کند. همچنین، میتواند از ابزارهایی مانند Logstash نیز استفاده کند.
Logentries با بسیاری از زبان های برنامه نویسی از جمله Android, GoLang, Java, node.js, PHP, Python, Ruby, Javascript و بسیاری دیگر سازگار است.
این ابزار توانایی دریافت داده های لاگ با هر فرمت و قالبی را دارد و از محیط های زیادی مانند server, application, database, firewall, load balancer, router و موارد دیگر می تواند لاگ گیری کند.
Logentries با یک زبان جست و جو مانند SQL داده ها را تجزیه و تحلیل کرده و به راحتی می تواند محاسباتی مانند میانگین، مجموع، حداکثر و ... را انجام داده و داده ها را مرتب سازی کند.
با این ابزار می توان به جای جستجوی کلمات یا عبارات، از Regex استفاده کرد. Logentries پنل کاربری قدرتمندی دارد که می تواند انواع مختلفی از نمودار ها را برای تجزیه و تحلیل سریع آماده سازد.
از آنجایی که Logentries داده ها را به صورت real time بررسی و تحلیل می کند پیام هشدار را در عرض چند ثانیه ارسال میکند.
ویژگی های Logentries
- جست و جو و نظارت real time
- سازگاری بدون در نظر گرفتن اندازه، قالب یا محیط
- تجزیه و تحلیل و نمایش
- گزارش و هشدار به صورت real time
- امنیت بالا برای حفاظت از داده ها
- قابلیت ادغام شدن با برترین ابزار های چت و نظارت
3. Sentry
Sentry یک ابزار متن باز (open-source) است که بهصورت real-time خطاها را از سراسر برنامه شما جمع آوری می کند تا توسعه دهندگان بتوانند به راحتی این خطاها را رفع کنند.
این ابزار از بسیاری از زبانهای برنامه نویسی از قبیل JavaScript، Python، Ruby، Node.js، Go، Android، PHP و … و همچنین بسیاری از فریم ورک ها از قبیل React، Django، Rails، Angular، Laravel، Swift، Vue و … پشتیبانی می کند که تقریباً همه نوع برنامه قابل تصور را پوشش می دهد.
کار با این ابزار بسیار ساده است و به همین دلیل بیش از 60 هزار سازمان و بیش از 1 میلیون برنامه نویس بهطور فعال از آن استفاده می کنند.
Sentry هر خطایی که در برنامه ایجاد شده باشد را با جزئیات نمایش داده و خطاها را از طریق ایمیل، پیام کوتاه، Slack و … به کاربران خود اطلاع می دهد. این ابزار با پلتفرم ها و ابزارهای زیادی قابل ادغام است و برای نمایش لاگ ها می تواند از ابزارهای دیگر نیز استفاده کند.
4. Beats
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، PostgreSQL، Redis، System، و Zookeeper جمع آوری کرده و به Elasticsearch و یا Logstash منتقل می کند.
Packetbeat
یک آنالیزور network packet (بسته های شبکه) است که اطلاعات host و کانتینر را به Elasticsearch و یا Logstash منتقل می کند.
Winlogbeat
به عنوان یک سرویس در ویندوز نصب می شود و لاگ رویداد های ویندوز را به Elasticsearch و یا Logstash منتقل می کند. رویدادهایی مانند: application events, hardware events, security events, system events
5. Fluentd
Fluentd یک ابزار مبتنی بر فضای ابری، متن باز و کاملاً رایگان برای جمعآوری لاگ است که به کاربر این امکان را می دهد تا معماری سازگار “Log All Everything” را با سیستمهای متنوع و زیادی پیادهسازی کند. این ابزار می تواند داده ها را بهصورت real-time جمع آوری کند تا فایل های لاگ ایجاد کرده و بر روی این فایلها نظارت و مدیریت نماید.
👈 این ابزار بهطور گسترده ای توسط کاربران نرم افزارهایی مانند GCP، Docker و Elasticsearch استفاده میشود.
ویژگی ها کلیدی Fluentd
- یکپارچهسازی لاگگیری با JSON: این ابزار سعی دارد تا حد امکان ساختار داده های خود را به فرمت JSON تبدیل کند. این کار به Fluentd اجازه می دهد تا تمامی جنبه های لاگ گیری (جمعآوری، مرتبسازی، بافرینگ و خروجی) را یکپارچه کند.
- معماری پلاگینپذیر (Pluggable): Fluentd دارای یک سیستم پلاگین انعطافپذیر است که به جامعه توسعه دهندگان اجازه می دهد آن را گسترش دهند. با استفاده از این پلاگین ها، می توان سریع تر و بهتر از داده های لاگ ها استفاده کرد.
- نیاز به حداقل منابع: این ابزار با زبان های C و Ruby نوشته شده است و به منابع بسیار کمی برای اجرا نیاز دارد. نمونه ابتدایی آن بر روی 30 تا 40 مگابایت حافظه کار می کند.
- ساختار درونی قابلاطمینان: Fluentd از بافر مبتنی بر حافظه و فایل پشتیبانی میکند تا جلوی از دست رفتن داده ها بین قسمت های مختلف برنامه را بگیرد.
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
Solarwinds Security Event Manager یک سیستم جامع مدیریت لاگ است که بهصورت real-time مانیتورینگ لاگ ها را انجام می دهد و در دسترسی به لاگ ها بسیار کمککننده است. این نرم افزار بر روی ویندوز سرور اجرا می شود، اما فقط محدود به event لاگ های ایجاد شده در ویندوز نیست.
این نرم افزار سیستم عامل های Windows 10 و بالاتر، Windows Server 2012 و بالاتر و همچنین سیستم های مبتنی بر فضای ابری Hypervisor, AWS, Microsoft 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
Sematext Logs یک ابزار مدیریت لاگ است که امکان جمعآوری، ذخیرهسازی و ایندکس کردن لاگها را می دهد و بهصورت real-time به آنالیز داده های لاگ هایی که از منابع مختلف جمعآوری شده اند، میپردازد.
این نرمافزار دارای ویژگی های نمایش لاگ بهصورت زنده، هشداردهی، جستوجو و فیلترینگ قدرتمند است که برای تیمهای DevOps (که می خواهند سریع برنامه های خود را عیب یابی کنند)، بسیار مفید است. Sematext Logs با بسیاری از ابزارها و کتابخانه های 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/