هر شرکت یا سازمانی شاید مجموعا دهها، صدها یا هزاران سرور اپلیکیشن و وب، پایگاه داده و دستگاههای شبکه مانند سوئیچها، روترها و فایروالها داشت باشد. هرکدام از این نرم افزارها و تجهیزات، لاگ ها یا جریانهای دادهای مخصوص به خودشان را ایجاد میکنند که فعالیتها و وضعیتهایشان را در طول زمان ثبت میکنند. حال تصور کنید که در نقش یک ادمین سیستم، نیاز دارید یک مشکل را عیبیابی کنید که ممکن است ناشی از هرکدام از بخش های سیستم (چه بخش های نرم افزاری و چه بخش های سخت افزاری) باشد و مجبور باشید به صورت دستی به هر یک از این ماشینها وارد شوید، فایل لاگ آنها را جستجو کنید و با تصویری مشابه تصویر زیر مواجه شوید:
تصویر بالا فقط بخش کوچکی از یکی از هزاران فایل های لاگی است که باید بررسی کنید تا تشخیص دهید که کدام یک از سخت افزارها یا نرم افزارهای سازمان شما در چه مرحله ای دچار مشکل شده است. آیا انجام چنین کاری به صورت دستی ممکن است؟ لحظه ای به این سوال فکر کنید و بعد خواندن را ادامه دهید.
احتمالا با خودتان فکر می کنید که بررسی دستی این فایل های لاگِ پیچیده که ساختار مشخصی هم ندارند، چقدر خستهکننده و زمانبر است. آیا دنیای فناوری، ما انسان ها را با هزاران فایل لاگ تولید شده توسط ماشین ها تنها گذاشته و هیچ فکری برای بررسی و تحلیل ماشینی آن ها نکرده است؟ جواب قطعا منفی است!
Splunk چیست؟
اینجاست که ابزاری مانند اسپلانک به کار میآید. شما میتوانید دادههای ماشینی خودتان را به اسپلانک بدهید تا پس از ذخیره، پردازش و استخراج دادههای مرتبط، بتوانید بهراحتی مکان و نوع مشکلات را شناسایی کنید. اسپلانک در سال 2003 برای حل چنین چالشی متولد شد اما امروزه فراتر از عیبیابی، از اسپلانک می توان برای ساخت گزارشها و داشبوردها برای نظارت بر عملکرد مجموعهای از سرورها و دستگاههای مرتبط استفاده کرد. حتی می توان هشدارهایی ایجاد کرد که شما را از طریق پیامک یا ایمیل در صورت بروز مشکل مطلع کند. همچنین از آن برای شناسایی تهدیدات امنیتی، تحلیل رفتار کاربران و حتی تحلیل پیش بینی برای شناسایی مشکلات بالقوه قبل از وقوع بهره برد. همین قابلیت های جذاب در کنار نیاز به چنین ابزاری در دنیای کلان داده ها، باعث رشد چشم گیر اسپلانک شد تا جایی که در حال حاضر این شرکت، بیش از 7500 کارمند دارد. اما اسپلانک واقعا چیست و چطور کار می کند؟ با ما در ادامه این مقاله همراه باشید تا به جواب این سوال برسید.
اگر بخواهیم اسپلانک را به زبان ساده تعریف کنیم تا هر کسی که اندک فعالیتی در دنیای فناوری هم داشته، بتواند آن را درک کند و در عین حال قابلیتهای فوقالعادهاش نیز نادیده گرفته نشود، می توان گفت: اسپلانک چیزی شبیه گوگل است اما برای انواع دادههای ماشین! یعنی همان طور که گوگل جایی برای ذخیره و نگهداری و جستجو (و حتی اخیرا تا حدی بصری سازی) روی داده های وب است، اسپلانک نیز همین کار را روی داده های ماشینی سازمان شما انجام می دهد. داده هایی که ممکن است از هر منبعی وارد اسپلانک شده باشند. اما اگر بخواهیم تعریف رسمی و تخصصی تر از اسپلانک داشته باشیم، بهتر است این طور بگوییم:
اسپلانک یک پلتفرم نرمافزاری بهعنوان سرویس (Software as a Service) است که با زبان های C، C++ و پایتون توسعه یافته و توانایی جستجو، نظارت، تحلیل و بصری سازی دادههایی که از وبسایتها، اپلیکیشنها، حسگرها، دستگاهها و غیره جمعآوری میشود را دارد. وقتی از یک پلتفرم نرم افزاری صحبت می کنیم، با یک ابزار یا اپلیکیشن واحد سر و کار نداریم، بلکه با بستری مواجهیم که با فراهم کردن امکانات متنوع، کار با ابزارها و اپلیکیشن های متنوع را برای ما تسهیل می کند. علاوه بر این، اسپلانک ساختار ماژولاری دارد. بدین معنی که کاربران میتوانند قابلیتهای متنوعی را از طریق نصب App های مختلف به اسپلانک اضافه کرده و از آنها بهرهمند شوند.
اسپلانک با قابلیت مقیاس پذیری میتواند بهگونهای پیکربندی شود تا دادههایی که به صورت Real Time تولید می شوند ثبت و ایندکس کند و بهطور خودکار گرافها، گزارشها، هشدارها و داشبوردهای بهروز تولید کند. این قابلیت اسپلانک بهدلیل بهره گیری این ابزار از پردازش موازی است که می تواند بهسرعت حجم بسیار بالایی از دادههای خام و بدون فرمت را در قالب ایندکس ها ذخیره کرده و آن ها را با استفاده از یک زبان پرسوجوی بسیار ساده و در عین حال قدرتمند، قابل جستجو کند.
معماری اسپلانک
همان طور که گفته شد، معماری اسپلانک ماژولار و مقیاسپذیر است و از چندین مؤلفه کلیدی تشکیل شده است که در یک pipeline داده با هم کار میکنند. مؤلفههای اصلی شامل Forwarderها، Indexerها و Search Headها هستند که در ادامه به طور مختصر درباره آن ها توضیح می دهیم.
- Forwarder
Forwarder در قالب یک برنامه سبک روی سرورها، تجهیزات شبکه و اپلیکیشنها نصب میشود تا دادهها را جمعآوری کرده و به Indexer اسپلانک ارسال کند. در اسپلانک دو نوع Forwarder وجود دارد: Universal Forwarder (UF) که دادههای خام را بدون هرگونه پیش پردازشی ارسال میکند و Heavy Forwarder (HF) که میتواند دادهها را قبل از ارسال، تجزیه و پیشپردازش کند.
- Indexer
Indexer قلب معماری اسپلانک است. اسپلانک به جای استفاده از پایگاه داده، دادههای خام را از Forwarderها یا منابع دیگر دریافت و پردازش کرده و آنها را با استفاده از Indexer بهعنوان رویدادهای قابل جستجو در قالب ایندکسها ذخیره میکند. وقتی دادهها به یک Indexer میرسند، تجزیه می شوند (اگر این کار قبلاً توسط یک Heavy Forwarder انجام نشده باشد). پس از تجزیه، Indexer ، دادهها را بهصورت ساختاریافته در قالب فایل های ایندکس بر روی دیسک مینویسد.
- Search Head
Search Head مؤلفهای است که رابط کاربری (وب یا خط فرمان) را برای کاربران فراهم میکند تا دادهها را جستجو و تحلیل کنند. این مؤلفه درخواستهای جستجو را از کاربران میپذیرد و آن جستجوها را به Indexerهایی که دادهها را در خود دارند توزیع میکند.
مولفه های دیگری نیز مانند Deployment Server، Cluster Master و License Master وجود دارند. این معماری می تواند در سه مدل مختلف که در ادامه توضیح داده می شود در یک سازمان استقرار یابد.
- Standalone Architecture: در این مدل، تمام مولفه ها بر روی یک Instance نصب و پیکربندی میشوند و تمام مولفه های ذکر شده در آن به صورت یکپارچه عمل میکنند.
- Basic Architecture: در این مدل، Forwarder ها و Input ها جدا شدهاند و یک Heavy Forwarder یا Universal Forwarder وظیفه ارسال Log به Indexer ها را بر عهده دارد.
- Multi-instance Architecture: در این مدل، تمام مولفه ها کاملاً از یکدیگر تفکیک شده و به صورت مجزا با هم تعامل میکنند.
ویژگیها و قابلیتهای اسپلانک
اسپلانک چند ویژگی اساسی دارد که آن را به ابزاری فوقالعاده تبدیل میکند، میپردازد. این ویژگی ها را در ادامه توضیح می دهیم.
ایندکسگذاری: اسپلانک به جای پایگاه داده از ایندکسها برای دسترسی به دادههای از تقریباً هر جایی، از جمله دادههای وبسایتها، اپلیکیشنها، سرورها، پایگاههای داده، سیستمهای عامل و غیره استفاده میکند. بهطور واقعی هیچ محدودیتی برای تعداد ایندکسهایی که میتوانید داشته باشید وجود ندارد، هرچند نوع مجوز اسپلانک که استفاده میشود و همچنین فضای دیسک موجود باید در نظر گرفته شود.
جستجو: در اسپلانک، همه چیز حول جستجوی دادههای ایندکسشده میچرخد. با استفاده از زبان پردازش جستجوی اسپلانک، که بهعنوان SPL شناخته میشود، میتوانید هر نوع سوالی درباره هر یک از دادههای ایندکسشده خود بپرسید. جستجویی که ایجاد میکنید میتواند بهعنوان یک گزارش ذخیره شود یا بخشی از یک داشبورد باشد.
هشداردهی: اسپلانک به ما اجازه میدهد تا بهصورت Real Time بر رویدادها نظارت کنیم. این کار با ایجاد هشدارهایی انجام می شود که بر اساس جستجوهای ذخیرهشده عمل میکنند. اطلاعات هشدار به طور خودکار و از طریق مختلف می تواند ارسال شود.
گزارشگیری: گزارشها در اسپلانک شامل جستجوهای ذخیرهشده هستند. گزارشهای ایجادشده میتوانند در داشبوردها گنجانده شوند و بهصورت درخواستی اجرا شوند یا برنامهریزی شوند تا در فواصل منظم اجرا شوند. حتی میتوان گزارشها را طوری تنظیم کرد که هنگام برآورده شدن شرایط خاصی در نتایج جستجو، هشدارهایی تولید کنند.
داشبوردسازی: داشبوردهای اسپلانک میتوانند برای بصری سازی نتایج جستجوهای ذخیرهشده مختلف یا حتی نمایش خروجیهای جستجوهایی که در پسزمینه بهصورت Real Time در حال اجرا هستند، ایجاد شوند. داشبوردها میتوانند گزارشهای ساده و ایستا یا بسیار پیچیده باشند و میتوانند شامل چندین پنل ماژول باشند که از جعبههای جستجو، فیلدها، نمودارها و غیره استفاده میکنند.
کاربردهای اسپلانک
اسپلانک کاربردهای مختلفی دارد که دو مورد از رایجترین این موارد را در ادامه آورده ایم.
نظارت بر عملیات IT: اسپلانک بهطور گستردهای توسط تیمهای عملیات IT و DevOps برای نظارت بر سلامت و عملکرد زیرساخت سازمان ها و شرکت ها استفاده میشود. با تجمیع لاگها از سرورها، تجهیزات شبکه، سیستمهای عامل، پایگاههای داده و خدمات ابری، اسپلانک یک نمای یکپارچه و Real Time از فناوری های مورد استفاده سازمان ارائه میدهد.
امنیت سایبری: یکی از مهم ترین کاربردهای اسپلانک، امنیت سایبری است. تیمهای مرکز عملیات امنیت (SOC) از اسپلانک بهعنوان پلتفرمی برای جمعآوری دادههای مرتبط با امنیت استفاده میکنند. از این داده ها برای نظارت و گزارش گیری، شناسایی تهدیدها و عکس العمل های مناسب در زمان وقوع حوادث امنیتی استفاده می شود.
مدلسازی داده: در اسپلانک، مدلهای داده میتوانند حول دانش تخصصی مربوط به یک یا چند مجموعه دادهای که ایندکس شدهاند، ایجاد شوند. مدلهای داده معمولاً برای استانداردسازی اطلاعات خاص و البته تسهیل تلاش برای ایجاد گزارشها و داشبوردها حول دادههای خاص استفاده میشوند. در ماژول دوازدهم از دوره Splunk Fundamental 2 درباره مدل سازی داده توضیح داده ایم.
مجموعه این ویژگیها و قابلیتها باعث میشود که اسپلانک به ابزاری بسیار کارآمد و انعطافپذیر برای تحلیل دادهها و نظارت بر سیستمها تبدیل شود و به سازمانها کمک کند تا از دادههای خود به بهترین نحو استفاده کنند و تصمیمات بهتری بگیرند.
جمع بندی
اگرچه اسپلانک مزایای زیادی از جمله نظارت و تحلیل دادههای زمان واقعی را ارائه میدهد، اما راهاندازی و نگهداری اسپلانک نیاز به تخصص فنی بالایی دارد. البته راه اندازی اولیه اسپلانک آنچنان سخت نیست اما برای بهره برداری از ویژگی های پیشرفته تر این ابزار ممکن است به مقدار قابل توجهی آموزش نیاز داشته باشید. البته مستندات بسیار خوبی برای آموزش اسپلانک وجود دارد.
به طور کلی، اسپلانک به عنوان راهحلی جامع برای تجزیه و تحلیل دادهها، به سازمانها این امکان را میدهد که از دادههای خود به صورت بهینه بهرهبرداری کنند و در دنیای پیچیده و پرچالش امروز، رقابتی باقی بمانند. اگر تمایل دارید بیشتر با اسپلانک و قابلیت های آن آشنا شوید، می توانید پس از ثبت نام در سایت به طور کاملا رایگان در دوره Splunk Fundamental 1 شرکت کنید.