معماری اسپلانک splunk

معماری اسپلانک splunk

معماری اسپلانک splunk : تقاضا برای متخصصان Splunk افزایش چشمگیری داشته است، و این به دلیل افزایش روزافزون داده های تولید شده توسط ماشین های مختلف و هر فناوری که در شبکه و دنیای فن آوری امروزه مورد استفاده قرار می گیرد است. اگر می خواهید اسپلانک را در زیرساخت خود پیاده سازی کنید، مهم است که بدانید اجزاء مختلف Splunk چگونه کار می کند. این مقاله از ساینت به شما در درک معماری اسپلانک چگونگی تعامل اجزای مختلف Splunk با یکدیگر به شما کمک میکند.

اگر می خواهید در مورد نحوه کار سیستم Splunk درک عمیق تری داشته باشید، به شما توصیه می کنم این مقاله رو مطالعه کنید، که به شما درکی از Splunk می دهد و به شما می گوید چرا برای شرکت هایی که دارای زیرساخت های عظیم هستند ضروری است.

قبل از اینکه در مورد نحوه عملکرد اجزای Splunk مختلف صحبت کنم، اجازه دهید مراحل مختلف جریان داده ها را که هر جز Component تحت تاثیر آن قرار دارد را ذکر کنیم.

مراحل مختلف در جریان داده:

  • در Splunk اصولاً ۳ مرحله مختلف وجود دارد:
  • مرحله ورود داده Data Input stage
  • مرحله ذخیره اطلاعات Data Storage stage
  • مرحله جستجوی داده Data Searching stage

مرحله ورود داده (Data Input Stage)

در این مرحله، اسپلانک جریان داده خام را از منابع خود دریافت کرده، آن را به بلوک های ۶۴K تقسیم می کند و هر بلوک را با کلیدهای فراداده (metadata keys) حاشیه نویسی می کند. کلیدهای فراداده شامل نام میزبان (hostname)، منبع (source) و نوع منبع (source type) داده است. کلیدها همچنین می توانند شامل مقادیری باشند که به صورت داخلی استفاده می شوند، مانند رمزگذاری کاراکتر در جریان داده ها و مقادیری که پردازش داده ها را در indexing stage کنترل می کنند، مانند نمایه ای که باید رویدادها (events) در آن ذخیره شود.

مرحله ذخیره سازی داده ها (Data Storage Stage)

ذخیره داده شامل دو مرحله است: تجزیه (Parsing) و نمایه سازی (Indexing)

در مرحله تجزیه، نرم افزار Splunk داده ها را مورد بررسی، تجزیه و تحلیل و تبدیل قرار می دهد تا فقط اطلاعات مربوطه استخراج شود. این امر به عنوان پردازش رویداد (event processing) نیز شناخته می شود. در این مرحله است که نرم افزار Splunk جریان داده را به صورت رویدادهای جداگانه در می آورد. مرحله تجزیه دارای زیر فازهای بسیاری است:

  • تقسیم جریان داده ها به قسمت های جداگانه
  • شناسایی ، تجزیه و تنظیم بر اساس زمان
  • حاشیه نویسی رویدادهای منفرد با فراداده های کپی شده از کلیدهای منبع
  • تبدیل داده های رویداد و فراداده ها مطابق با قوانین تغییر regex

در مرحله Indexing، نرم افزار Splunk رویدادهای تجزیه شده را در Index ها روی دیسک می نویسد. هم داده خام فشرده و هم پرونده شاخص مربوطه را می نویسد. مزیت Indexing این است که در هنگام جستجو می توان به راحتی به داده ها دسترسی پیدا کرد.

مرحله جستجوی داده (Data Searching Stage)

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

معماری اسپلانک

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

اجزای اسپلانک

۳ قسمت اصلی در معماری اسپلانک وجود دارد:

Splunk Forwarder: برای ارسال داده ها استفاده می شود

Splunk Indexer: برای تجزیه و نمایه سازی داده ها استفاده می شود

Search Head: یک رابط کاربری گرافیکی است که برای جستجو، تجزیه و تحلیل و گزارش گیری استفاده می شود

Splunk Forwarder

Splunk Forwarder مولفه ای است که باید برای جمع آوری گزارش ها استفاده کنید. فرض کنید ، شما می خواهید لاگ های مربوط به یک ماشین از راه دور را جمع آوری کنید ، سپس می توانید با استفاده از Splunk’s forwarder Remote که از نمونه اصلی Splunk مستقل نیستند، به این مهم دست پیدا کنید.

در واقع، شما می توانید چندین forwarders را در چندین ماشین نصب کنید که داده های log را برای پردازش و ذخیره سازی به Splunk Indexer هدایت می کند. اگر می خواهید داده ها را در زمان واقعی تجزیه و تحلیل کنید ، چه می کنید؟ از splunk forwarder نیز می توان برای آن منظور استفاده کرد. می توانید ارسال را به صورت real-time پیکربندی کنید تا داده ها را به صورت بلادرنگ به ایندکسر های Splunk ارسال کنند. می توانید آنها را در چندین سیستم نصب کرده و همزمان از ماشین های مختلف داده ها را به صورت هم زمان جمع آوری کنید.

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

اکنون، اجازه دهید انواع مختلف Forwarder های اسپلانک را درک کنیم.

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

انتقال داده تقریباً در همه ابزارهای موجود در بازار یک مشکل اساسی است. از آنجایی که این مدل حداقل پردازش داده ها قبل از ارسال انجام می شوند، بسیاری از داده های غیرضروری نیز به ایندکسر منتقل می شوند و در نتیجه هزینه های اضافی عملکرد دارند.

Heavy Forwarder: شما می توانید از Heavy Forwarder استفاده کرده و نیمی از مشکلات خود را برطرف کنید، زیرا یک سطح پردازش داده قبل از ارسال داده ها به ایندکسر، در خود منبع اتفاق می افتد. Forwarder Heavy معمولاً تجزیه و ایندکسینگ را در منبع انجام می دهد و همچنین Heavy Forwarder با ارسال داده ها به صورت هوشمند به صرفه جویی در Indexer در پهنای باند و فضای ذخیره سازی منجر می شود. بنابراین وقتی یک Heavy Forwarder داده ها را تجزیه می کند، ایندکسر فقط باید قسمت ایندکسینگ را مدیریت کند.

چرا در انتقال همه داده ها به ایندکسر مشکل وجود دارد و سپس چرا باید فقط داده های مربوطه را فیلتر کرد؟ آیا بهتر نیست فقط داده های مربوطه را به Indexer ارسال کنید و در پهنای باند، زمان و هزینه صرفه جویی کنید؟ این را می توان با استفاده از Heavy Forwarder که در زیر توضیح داده شده حل کرد.

نحوه کار Heavy Forwarder

Splunk Indexer

Indexer نیز یکی از اجزای اسپلانک است که برای indexing و ذخیره داده های دریافت شده از forwarder ها  استفاده می شود. اسپلانک داده های دریافتی را به رویدادها تبدیل کرده و برای انجام کارآمد عملیات جستجو در ایندکسها ذخیره می کند. اگر داده ها را از یک Universal forwarder دریافت می کنید، سپس indexer ابتدا داده ها را تجزیه می کند و سپس آنها را فهرست می کند. تجزیه و تحلیل داده ها برای از حذف دادهای اضافه انجام می شود. اما، اگر داده ها را از یک Heavy forwarder دریافت می کنید، indexer فقط داده ها را index می کند.

همانطور که Splunk instance داده های شما را index می کند، تعدادی فایل را نیز ایجاد می کند. این فایلها حاوی یکی از موارد زیر است:

داده های خام به صورت فشرده

index هایی که به داده های خام اشاره می کنند (فایل های ایندکس که به آنها فایل های tsidx گفته می شود)، بعلاوه برخی از پرونده های Metadata

این پرونده ها در مجموعه ای از دایرکتوری ها به نام bucket قرار دارند.

indexing در معماری اسپلانک چگونه کار می کند.

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

جریان داده را به رویدادهای جداگانه و قابل جستجو تفکیک می کند

ایجاد یا شناسایی timestamps

استخراج فیلد هایی مانند میزبان، منبع و نوع منبع

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

این فرآیند indexing به عنوان پردازش رویداد event processing نیز شناخته می شود.

از دیگر مزایای Splunk Indexer، تکثیر داده ها است. شما نگران از دست رفتن داده ها نباشید زیرا Splunk چندین نسخه از داده های فهرست شده را نگه می دارد. به این فرآیند Index replication یا Indexer clustering گفته می شود. این امر با کمک یک کلاستر از Indexer که گروهی از indexer ها که برای تکثیر داده های یکدیگر پیکربندی شده اند، حاصل می شود.

Splunk Search Head

Splunk Search Head در معماری اسپلانک مولفه ای است که برای تعامل با Splunk استفاده می شود. این یک رابط کاربری گرافیکی برای انجام عملیات مختلف به کاربران ارائه می دهد. با وارد کردن کلمات جستجو می توانید داده های ذخیره شده در شاخص را جستجو و پرس و جو کنید و نتیجه مورد انتظار را بدست خواهید آورد.

می توانید Splunk Search Head را روی سرورهای جداگانه یا سایر مولفه های Splunk در همان سرور نصب کنید. هیچ فایل نصب جداگانه ای برای Splunk Search Head وجود ندارد، فقط باید سرویس splunkweb را در سرور Splunk فعال کنید تا این گزینه فعال شود.

Splunk instance می تواند هم به عنوان search head و هم search peer عمل کند. یک search head که فقط جستجو را انجام می دهد، و نه indexing به عنوان یک search head اختصاصی نیز شناخته می شود. در حالی که، یک کاربر جستجو indexing را انجام می دهد و به درخواست های جستجو از سایر search headها پاسخ می دهد.

در یک نمونه Splunk، یک search head می تواند درخواست های جستجو را به گروهی از indexer ها یا جستجوی مشابهی که جستجوهای واقعی را در نمایه های خود انجام می دهند، ارسال کند. سپس سر جستجو نتایج را ادغام کرده و آنها را برای کاربر ارسال می کند. این یک روش سریعتر برای جستجوی داده هایی است که جستجوی توزیعی نامیده می شود.

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

معماری پیشرفته اسپلانک با یک سرور Deployment/Management Console

معماری پیشرفته اسپلانک

برای درک نحوه کار اسپلانک به تصویر بالا نگاه کنید. این تصاویر چند Forwarder را نشان می دهد که داده ها را به Indexers ارسال می کنند. بر اساس داده های موجود در ایندکسر، می توانید از Search Head برای انجام عملکردهایی مانند جستجو، تجزیه و تحلیل، تجسم و ایجاد اشیا دانش برای هوش عملیاتی استفاده کنید.

میزبان Management Console به عنوان یک مدیر پیکربندی متمرکز مسئول توزیع تنظیمات، به روزرسانی برنامه ها و به روزرسانی های محتوا به Deployment Clients است. Deployment Clients ها شامل: Forwarders, Indexers and Search Heads هستند.

معماری اسپلانک

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

معماری کلی اسپلانک

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

شما می توانید فایل های وارد شده را کنترل کرده و تغییرات را در زمان واقعی تشخیص دهید.

forwarder این قابلیت را دارد که هوشمندانه داده ها را مسیریابی کند، داده ها را شبیه سازی کند و قبل از رسیدن به indexer، تعادل بار را روی آن داده انجام دهد. شبیه سازی برای ایجاد چندین نسخه از یک رویداد درست در منبع داده انجام می شود، جایی که کار عنوان توازن بار انجام می شود، بنابراین حتی اگر یک نمونه خراب شود، داده ها می توانند به نمونه دیگری که میزبان ایندکس است، ارسال شوند

همانطور که قبلاً اشاره کردم ، سرور deployment برای مدیریت کل استقرار، پیکربندی ها و سیاست ها استفاده می شود

هنگامی که این داده ها دریافت می شوند، در یک Indexer ذخیره می شوند. Indexer سپس به منابع منطقی داده های مختلف logical data stores تقسیم می شود و در هر data store می توانید مجوزهایی را تنظیم کنید که هر کاربر را مشاهده ، دسترسی و استفاده کند.

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

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

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

سرانجام می توانید Knowledge objects برای غنی سازی داده های بدون ساختار موجود استفاده کنید.

Search head ها و Knowledge objects از طریق Splunk CLI یا رابط وب Splunk قابل دسترسی هستند. این ارتباط از طریق اتصال REST API اتفاق می افتد

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

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