کامپوننتهای اصلی Splunk
معماری Splunk از مجموعهای از کامپوننتها تشکیل شده است که هر یک وظیفه مشخصی در چرخه دریافت، پردازش، ذخیرهسازی و تحلیل داده بر عهده دارند. این کامپوننتها نقشهای منطقی (Logical Roles) هستند و الزاماً به معنی سرورهای مجزا نیستند.
در محیطهای کوچک چندین Role میتوانند روی یک سرور اجرا شوند، در حالی که در استقرارهای سازمانی معمولاً هر Role روی زیرساخت اختصاصی و در برخی موارد بهصورت کلاستری پیادهسازی میشود.
Forwarder
Forwarder نقطه ورود داده به Splunk است و وظیفه جمعآوری و ارسال اطلاعات از منابع مختلف را بر عهده دارد. این مؤلفه معمولاً روی سرورها، تجهیزات شبکه، سیستمهای امنیتی و سایر منابع تولیدکننده داده نصب میشود و دادههای جمعآوریشده را به سمت Indexerها ارسال میکند.
- Universal Forwarder (UF): سبکترین نوع Forwarder است که با حداقل مصرف منابع، دادهها را تقریباً بدون پردازش به Indexerها ارسال میکند.
- Heavy Forwarder (HF): نسخه کاملتری از Splunk Enterprise است که علاوه بر جمعآوری داده، قابلیت Filter، Parse و Route کردن دادهها را نیز پیش از ارسال فراهم میکند.
Indexer
Indexer هسته پردازش و ذخیرهسازی داده در Splunk است. دادههای خام دریافتی را پردازش کرده، آنها را به Eventهای قابل جستوجو تبدیل میکند و در ساختار Index ذخیره مینماید. اطلاعاتی مانند Source، Host، Timestamp و Sourcetype نیز برای جستوجو آماده میشوند.
ساختار ذخیرهسازی داده (Bucket)
دادههای ایندکسشده در Splunk در ساختارهایی به نام Bucket ذخیره میشوند. هر Bucket شامل مجموعهای از Eventها به همراه فایلهای TSIDX و Metadata مرتبط با جستوجو است.
- Hot Bucket: در حال دریافت داده جدید است و قابل جستوجو باقی میماند.
- Warm Bucket: داده جدید دریافت نمیکند اما همچنان کاملاً قابل جستوجو است.
- Cold Bucket: دادههای قدیمیتر را روی Storage کمهزینهتر نگهداری میکند.
- Frozen Bucket: داده حذف یا به آرشیو خارجی منتقل میشود.
- Thawed: داده Frozen شدهای که از آرشیو بازیابی شده است.
Search Head
Search Head لایه تعامل کاربران با Splunk است. کاربران از طریق آن جستوجوهای SPL را اجرا میکنند، Dashboardها و Reportها را میسازند و Alertهای موردنیاز خود را تعریف میکنند.
در معماریهای توزیعشده، Search Head داده را ذخیره نمیکند؛ بلکه Queryها را میان Indexerها توزیع کرده، نتایج را تجمیع میکند و خروجی نهایی را به کاربر نمایش میدهد.